Aktywne Wpisy

jmuhha +44
Tak wygląda „skandynawskie drewno” w praktyce.
Ładne z wierzchu, a w środku… papier. Symbol naszych czasów
Ładne z wierzchu, a w środku… papier. Symbol naszych czasów
źródło: 1000021897
Pobierz
MonazoPL +87
Ruszamy z kolejnym #rozdajo – wygraj kartę podarunkową do Allegro o wartości 100 zł!
Aby wziąć udział w konkursie, zaplusuj ten wpis oraz w komentarzu krótko odpowiedz na pytanie konkursowe: Jeśli wygrasz, na co wydasz (lub do czego dołożysz) to 100 zł? ( ͡~ ͜ʖ ͡°
Aby wziąć udział w konkursie, zaplusuj ten wpis oraz w komentarzu krótko odpowiedz na pytanie konkursowe: Jeśli wygrasz, na co wydasz (lub do czego dołożysz) to 100 zł? ( ͡~ ͜ʖ ͡°
źródło: santander 1060
Pobierz



Mamy eventy w Azure Event Hubs, które na razie (bo nie mamy jeszcze proda - trochę taka zabaw póki co) - generujemy ręcznie poprzez feature Azurowy "Data Generator", gdzie możemy podać jsona i dodać do "kolejki", a w naszej appce spring bootowej consumer sobie je pobiera i wywołuje odpowiednią akcję. Gdzieś w środku logiki uderzamy webclientem do zewnętrznego serwisu.
Jeszcze nie wiadomo w jaki sposób docelowo będą generowane te eventy.
Co potrzebuję:
1. Dodać trace id (minimum z wymagań) i jakiś correlation id, te dane muszą być propagowane do każdego z serwisów.
I teraz pytanie, z czego najlepiej skorzystać?
Czytam o Spring Cloud Sleuth oraz Micrometer. Lead coś wspominał, żeby obczaić czy Micrometer nie wystarczy lub coś innego niż Sleuth, ale z tego co ja czytam to Micrometer chyba nie jest do tracingu.
2. Potrzebuję zastanowić się jak to zrobić w dwóch przypadkach:
- dla obecnej sytuacji, gdzie generujemy event ręcznie z jsonem - raczej w tym przypadku to nie my powinniśmy generować trace id itd, tylko już po stronie consumera w logice?
- Jeśli jest jakiś producent w appce, który generuje eventy - wtedy już producent będzie tworzył trace id/ correlation id itp.
Powiedzmy, że mam pomysł na otrzymywanie eventu w formie obiektu:
class Request<T> {String traceId;
String correlationId;
T request; //tutaj json z danymi
}
czy odpalając całe flow w spring appce dla tego eventu, zaczynając od consumera, który wywołuje jakąś logikę (.handle(event)) powinienem do każdej metody przekazywać ten traceId, correlationId, żeby przy uderzeniu do zewnętrznego serwisu posłać te dane?
Nie za bardzo wiem jak to ma działać :)
#programista15k #programista25k #programowanie #java #spring #azure
To
źródło: spans-traces
Pobierzźródło: 1*_EFNAD8ipCbNJhk7Typ3kQ
PobierzSerwis A dostaje request, generowany jest kontekst (trace id) który jest dołączany do eventu/wiadomości i ląduje sobie na kolejce (Kafka, Azure Event Hub, RabbitMQ, cokolwiek) i tam sobie czeka. Konsument wiadomości pobiera tą wiadomość razem z kontekstem (wygenerowanym trace id) i przekazuje dalej do serwisu B za pomocą requestu HTTP w którym kontekst dołączany jest do żądania. Po obsłudze serwis B wysyła
@markaron: W tym mam problem. Ale może tak ma być? Bo Przekazanie wiadomości z serwisu A do B to nie są jakieś chain http calle. Zanim ten serwis A przekaże do serwisu B to jest wywoływany łańcuch metod, gdzie przekazuje różne parametry.
Rozumiem, że chodzi ci o coś w
Coś takiego, pisałem z palca i wymyślałem:
@PostMapping("run-task")public ResponseEntity<TaskResult> runTask(@RequestBody RequestObj obj) {
class Program
{
static ActivitySource s_source = new ActivitySource("Sample.DistributedTracing");
static