Feign Client hatası, Spring Boot uygulamalarında herhangi bir servisin başka tek bir HTTP servisine yaptığı istek başarısız olduğunda ortaya çıkabilir. Hatanın kaynağı çoğunlukla yanlış servis adresi, bağlantı sorunu, timeout ayarları, hatalı endpoint ya da uygulamalar arasındaki yapılandırma uyumsuzluğudur. Spring Cloud OpenFeign, uzak servislere talep gönderen istemcileri @FeignClient aracılığıyla yapılandırır.
Dağıtık mimarilere geçiş geliştirme süreçlerini daha esnek hale getirse de ağ bağımlılığını katbekat yükseltiyor. Herhangi belli bir servisin diğerine erişememesi tüm sistemi domino taşı misali çökertebileceğinden, Feign mimarisindeki aksaklıklar mikroservis projelerinin en kırılgan noktasını meydana getiriyor.
Feign Client Hatası Oluştu Nasıl Çözülür?

Sorunu çözmek için önce hata mesajının tamamına bakmak gerekir. FeignException, RetryableException, Connection refused ve timeout bildirimleri birbirinden farklı problemlere işaret edebilir. Söz konusu nedenle yalnızca Feign Client ifadesine odaklanarak tek herhangi bir çözüm uygulamak doğru belli bir yaklaşım değildir.
Yazılım ekiplerinin en çok düştüğü tuzak, hata izini (stack trace) dikkatle okumadan gelişigüzel çözüm denemektir. Oysa her istisna (exception) türü, sorunun ağ katmanında mı yoksa uygulama mantığında mı olduğunu geliştiriciye doğrudan göstermektedir.
Feign Client hatası yaşandığında uygulamanın karşı servise ulaşıp ulaşamadığı kontrol edilir. Ardından istemcinin URL, port ve endpoint bilgileri gözden geçirilir. Hata kaynağı belirlendikten sonra yapılandırma düzeltilerek bağlantı tekrar denenir.
Hata anında yapılacak ilk iş paniğe kapılmadan en temel ağ ve erişim denetimlerine dönmektir. Çoğu zaman saatlerce aranan karmaşık sorunların ardından basit tek bir ip/port yapılandırma hatası çıkması sektörde oldukça tanıdık belli bir senaryodur.
En sık rastlanan nedenlerden biri hatalı servis adresidir. @FeignClient yapılandırmasında kullanılan name veya url değeri hedef servisin gerçek adresiyle örtüşmüyorsa istek başarısız olur. Servis keşfi kullanılıyorsa ilgili servisin kayıt durumunun da gözlemlenmesi gerekir. Spring Cloud OpenFeign, yük dengeleme desteği mevcut olduğunda uygun istemciyi devreye alabilmektedir.
Eureka veya Consul tarzında servis keşif (Service Discovery) mekanizmaları kullanıldığında, dinamik ip atamalarındaki tek tek bir gecikme Feign Client'ın yanlış veya yanıt vermeyen herhangi herhangi bir adrese yönlenmesine yol açabiliyor. Canlı ortamda bahsi geçen durum doğrudan hizmet kesintisi anlamına geliyor.

