Jak odczytać nagłówek HTTP w niższych warstwach?

0

Endpoint w springu dostaje na łeb HTTP nagłówek Correlation-Id, następnie wołany jest serwis czy jakieś inne driven adaptery.

Gdzieś tam głębiej w tym serwisie chcę odczytać wartość tego correlationId, np. żeby przekazać correlationId do downstream systemu albo sobie to ładnie wyświetlić tęczowymi literkami. Ofc nie ma mowy o przekazywaniu correlationId miliard poziomów w dół w nagłówkach metod.

Jak ten problem rozwiązać, ale tak kulturalnie i z finezją? A najlepiej w taki sposób żeby dało się to wydzielić do sharowanej biblioteki.

Ja a nawet ChatGPT proponujemy Filter który będzie wyciągał to z HttpServletRequesta i wsadzał to w ThreadLocal?

2

MDC?

5
DisposableUserException napisał(a):

Endpoint w springu dostaje na łeb HTTP header "Correlation-Id", następnie wołany jest serwis czy jakieś inne driven adaptery.

Gdzieś tam głębiej w tym serwisie chcę odczytać wartość tego correlationId, np. żeby przekazać correlationId do downstream systemu albo sobie to ładnie wyświetlić tęczowymi literkami. Ofc nie ma mowy o przekazywaniu correlationId miliard poziomów w dół w nagłówkach metod.

Dużo tych poziomów się narobiło. Może wywalić 999 999 996 poziomów, a przekazywanie w pozostałych to już nie będzie problem?

Jak ten problem rozwiązać, ale tak kulturalnie i z finezją? A najlepiej w taki sposób żeby dało się to wydzielić do sharowanej biblioteki.

Ja a nawet ChatGPT proponujemy Filter który będzie wyciągał to z HttpServletRequesta i wsadzał to w ThreadLocal?

To bardzo dobry pomysł - tak rodzą się patologie. Potem, ktoś wywoła metodę np w jakimś batchu, nie wsadzi tego Correlation-Id w ThreadLocal i się zacznie walić. Albo ktoś zechce używać wątków i np. correlation-Id zaczną się mieszać między requestami -> polecam.

0

Kiedys ja zaczynałem to znalazem w kodzie coś w drugą stronę. Było kilka poziomów i jeden specjalista chciał zwrócić obiekt gdzie wcześniej była tylko flaga to go opakował w wyjątek. Takie sterowanie przez wyjatki :)

6

Wyciągnij nagłówek w kontrolerze i przekaż go jako parametr.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.