İleri

2015-12-03 21 views
7

Ben RequestContextHolder.getRequestAttributes()null olduğunu RequestInterceptor.apply içinde, bir uydurmak olarak istemci RequestInterceptor ile bir istek başlığını ileri ama istiyorum bir Feign istemci RequestInterceptor bir istek başlığı, yani SecurityContextHolder.getContext().getAuthentication() (Ben de sonuçta benim başlığının değerini alabilir yerde) . Şimdiİleri

hystrix.command.default.execution.isolation.strategy: SEMAPHORE 

I: Aşağıdaki parametreye değişen sorunu çözer çünkü

Bu

, hystrix komutları artık muhtemelen ayrı bir konu çalıştırılmalıdır İlkbahar-Bulut Brixton, yükseltmeden önce çalışmak için kullanılan Gerekmiyorsa, bu tür varsayılan değerleri değiştirmek konusunda fazla istekli değil misiniz, başka bir, önerilen başlıkların şimdi iletme yolu var mı?

Teşekkür

+0

'@ RequestHeader' öğesini feign bir yönteme aktarabilirsiniz. Ayrıca her bir feign çağrısını hystrix.command ile SEMAPHORE olarak ayarlayabilirsiniz. .execution.isolation.strategy: SEMAPHORE'. – spencergibb

+0

@spencergibb: Teşekkürler, düşündüğüm buydu. Projemin doktora notunu ekleyeceğim. –

+0

Sanırım kolay bir şekilde yapılandırılabilen iplik benzeri izolasyonu yapmak istiyoruz. – spencergibb

cevap

4

Tamam, ilham almak için Spring Cloud Sleuth bu ... çok teşekkür yapmanın bir yolu yoktur.

Yapmanız gereken "Tümü", bir iş parçacığı değişikliği olduğunda bilgileri ileten bir HystrixConcurrencyStrategy uygulamaktır. Sleuth'da çok benzer bir şey yapan sınıf here'dur. Isterim benim özel durum için

: ile wrapCallable yılında

  1. Wrap Callable örneğin
  2. CallableWithAuthenticationcall yöntem ilk önce geri cekti inşa zaman geçerli kimlik doğrulaması yapacağını bir CallableWithAuthentication sınıf Authentication kaydedildi, ardından orijinal eylemi çağırıp geçerli Authentication, ve voilà'yı temizleyin.

HystrixConcurrencyStrategy isteğiniz dolduğunda interceptor, Thread izolasyonu ile bile tekrar çalışır.

Not: Projenin geri kalanını kontrol edin, diğer ilginç aletlerle ilgilenin (örneğin RxJava için).

+0

Sevdiğinize sevindim!Belki bize bazı şeyler katkıda bulunacaksınız: D –

+0

@MarcinGrzejszczak: Zaman burada sorun, ama hey, neden olmasın :) –

+0

Bu sadece geçerli iş parçacığından feignclient çağırıyorsanız çalışır. Veya başka bir iş parçacığından müşteri feign istemcisi yapılandırma var mı? Bazı onaylamalar yapan ve dış hizmetleri arayarak özel threadpoolexecutor kullanıyorum. Ancak bu durumda istek nitelikleri yayılmaz :( – bilak