Wiosenne KafkaTestUtils: zaczekaj, aż komunikat jak w temacie nie będzie potrzebne

0

Pytanie

Tak, spotkałem się z ciekawą sytuacją:

W swoim интеграционном teście wysyłam dane w 2 tematy, i muszą być stosowane aplikacji na zamówienie. Najpierw - userTopic, a następnie należy użyć userOrderTopic.

Gdy wysyłam swoje wiadomości w trybie testowym, idą bardzo szybko i w tym samym czasie. Ale czasami kolejność konsumpcji aplikacji różni. (Temat zamówienia użytkownika, a następnie userTopic) że w ogóle narusza mój test.

Znalazłem kilka триков, jak mogłem tego uniknąć - sen przepływu itp. Ale uważam, że to złe rozwiązanie.

Jestem nowy w "procesie" kafki, jak i w przypadku КафкаТестУлами. Czy istnieje jakiś sposób, który mógłby sprawdzić, że wiadomość w temacie wydano/sprawdzić, gdy ta wiadomość nie wydano?

Coś takiego:

//check that message in userTopic was consumed, to have a chance send message to userOrderTopic 
KafkaTestUtils.waitUntilBeConsumed(serverBootstrap, "user-consumer", topic, 0, messageToUserTopic)

lub

KafkaTestUtils.getNowConsumedMessage(serverBootstrap, "user-consumer", topic, 0)

P. S. w moim teście integracji nie mam dostępu do producenta/konsumenta.

Lub, być może, w spring.kafka /spring.kafka.test jest jeszcze jedno narzędzie, aby zrobić to prawidłowo?

1

Najlepsza odpowiedź

0

KafkaTestUtils przeznaczony jest wyłącznie do spożycia od testowych konsumentów, a nie od rzeczywistych konsumentów aplikacji.

Prostego rozwiązania dla tego wyścigu nie istnieje; trzeba poczekać, aż zostanie użyty pierwszy wpis, przed wysłaniem drugą.

2021-11-23 21:03:32

Tak więc, czy jest jakiś sposób na sprawdzenie, czy wiadomość została wysłana? Niż wydaje się na wątek.sen-to dobry pomysł
Gary Russell

Istnieje kilka różnych metod, na przykład: - jeśli twój słuchacz powoduje, że usługi, dodać układ/zaślepkę tej usługi w swój przypadek testowy i poczekaj na jej połączenia; - dodaj RecordInterceptor do fabryki kontenerów detektora w twoim przypadku testowego i poczekaj na połączenie przechwytujący; - dodać serwer proxy wokół detektora, który odlicza zatrzask w testowym przypadku - patrz stackoverflow.com/questions/53678801/... dla przykładu.

dzięki za wyjaśnienie

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................