Spring KafkaTestUtils: konudaki mesaj tüketilene kadar bekleyin

0

Soru

Bu yüzden ilginç bir durumla karşı karşıya kaldım:

Entegrasyon testimde 2 konuya veri gönderiyorum ve uygulama tarafından siparişe göre tüketilmeleri gerekiyor. İlk başta-userTopic, sonra userOrderTopic tüketilmelidir.

Mesajlarımı testte gönderdiğimde, aynı anda çok hızlı bir şekilde gönderiliyor. Ancak bazen, uygulama ile tüketme sırası farklıdır. (userOrder konusu, sonra userTopic) testimi hiç bozan şey.

Bazı trikler buldum, bundan nasıl kaçınabilirim - iplik uykusu, vb. Ama bunun kötü bir çözüm olduğuna inanıyorum.

Kafka ile yeniyim, sonuç olarak KafkaSestUtils ile. Bu mesajın tüketilene kadar bu mesajın tüketildiğini/kontrol edildiğini kontrol edebilecek herhangi bir yöntem var mı?

Bunun gibi bir şey:

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

veya

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

P. S. entegrasyon testimde üretici / tüketiciye erişimim yok.

Ya da belki ilkbaharda.kafka / bahar.kafka.test uygun bir şekilde bunu yapmak için başka bir alet var mı?

1

En iyi cevabı

0

KafkaTestUtils sadece gerçek uygulama tüketicileri değil, test tüketicilerinden tüketmek içindir.

Bu yarış durumu için kolay bir çözüm yoktur; ikincisini göndermeden önce ilk kaydın tüketilmesini beklemeniz gerekir.

2021-11-23 21:03:32

Yani, orada herhangi bir şekilde onay mesajı cosumed? İplik gibi görünüyor.uyku kötü bir fikir değil
Gary Russell

Orada birkaç farklı teknikler, örneğin - eğer dinleyici aramaları servisi, add mock/stub bu hizmeti test durum ve beklemek için geçecek denilen; - ekleme RecordInterceptor test durumunuzdaki dinleyici kapsayıcı fabrikasına gidin ve engelleyicinin çağrılmasını bekleyin; - dinleyicinin etrafına test durumunda bir mandalı geri sayan bir proxy ekleyin-bkz. stackoverflow.com/questions/53678801 / ... bir örnek için.

açıklama için teşekkürler

Diğer dillerde

Bu sayfa diğer dillerde

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