Printemps KafkaTestUtils: attendre jusqu'à ce message dans le sujet serait consommé

0

La question

Donc, j'ai connu la situation intéressante:

Dans mon test d'intégration-je envoyer des données à 2 sujets, et ils doivent être consommés en application par le décret. Au premier userTopic, puis devraient être consommés userOrderTopic.

Lorsque j'envoie mes messages dans le test, il envoie vraiment rapidement, en même temps. Mais parfois, l'ordre de la consommation par application est différente. (userOrder sujet, puis userTopic) ce qui brise mon test à tous.

J'ai trouvé des triks, comment je pourrais l'éviter - fil de sommeil, etc. Mais je crois que c'est une mauvaise solution.

Je suis nouvelle de kafka, comme résultat avec KafkaTestUtils. Existe t'il une méthode, qui a pu vérifier que le message dans le sujet a été consommé/check jusqu'à ce que le message a été consommé?

Quelque chose comme ceci:

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

ou

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

P. S. mon insertion test je n'ai pas accsess de producteur/consommateur.

Ou peut-être au printemps.kafka /printemps.kafka.de test sont un autre des outils pour le faire de manière adéquate?

1

La meilleure réponse

0

KafkaTestUtils est seulement pour la consommation de tester les consommateurs de ne pas réelle demande des consommateurs.

Il n'y a pas de solution facile pour cette condition de course; vous devez attendre que le premier enregistrement pour être consommé avant l'envoi de la seconde.

2021-11-23 21:03:32

Donc, il n'y aucun moyen de vérifier que le message a été consommés? Que dirait fil.le sommeil n'est pas une mauvaise idée
Gary Russell

Il y a quelques différentes techniques, par exemple - si votre port d'écoute des appels de service, ajoutez une maquette/stub de ce service dans votre cas de test et d'attendre qu'il soit appelé; - ajouter un RecordInterceptor à l'auditeur conteneur usine dans votre cas de test et d'attendre que l'intercepteur d'être appelé; - ajouter un proxy autour de l'auditeur qui compte le loquet dans le cas du test - voir stackoverflow.com/questions/53678801/... pour un exemple.

merci pour l'explication

Dans d'autres langues

Cette page est dans d'autres langues

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