Jarní KafkaTestUtils: počkejte, až zpráva v tématu by být konzumovány

0

Otázka

Takže, stál jsem zajímavé situaci:

V mém testu integrace odeslat data na 2 témata, a měly by být spotřebovány aplikace na objednávku. Na první userTopic, pak by mělo být konzumovány userOrderTopic.

Když jsem poslal své zprávy v testu, pošle opravdu rychle, ve stejnou dobu. Ale někdy, aby z náročné tím, že aplikace je odlišná. (userOrder téma, pak userTopic), co láme test.

Našel jsem nějaké triks, jak bych se tomu mohla vyhnout - nit spánku, atd. Ale věřím, že je to špatné řešení.

Jsem nový s kafkou, jako výsledek s KafkaTestUtils. Existuje nějaká metoda, která by mohla zkontrolovat, že zpráva v tématu bylo spotřebováno/odhlášení, dokud zprávu, že bylo spotřebováno?

Něco jako toto:

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

nebo

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

P. S. v mém integrace test nemám accsess producentů/spotřebitelů.

Nebo možná na jaře.kafka /jaro.kafka.zkoušky jsou další nástroje, dělat to správným způsobem?

1

Nejlepší odpověď

0

KafkaTestUtils je pouze pro náročné z testu spotřebitelů není skutečné aplikace spotřebitele.

Neexistuje žádné jednoduché řešení pro tento závod podmínkou; budete muset počkat na první záznam být konzumovány před odesláním druhé.

2021-11-23 21:03:32

Tak, není tam žádný způsob, jak zkontrolovat, že zpráva byla cosumed? Než vypadá jako vlákno.spánek není špatný nápad
Gary Russell

Existuje několik různých technik, například - pokud váš posluchač volá službu, přidat mock/stub, které služby ve vaší testovací případ a čekat na to, být nazýván; - přidat RecordInterceptor na posluchače kontejner továrně v testového případu a čekat na interceptor nazvat; - přidat proxy, kolem posluchače, který odpočítává západka v případě test - viz stackoverflow.com/questions/53678801/... pro příklad.

díky za vysvětlení

V jiných jazycích

Tato stránka je v jiných jazycích

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