La primavera KafkaTestUtils: espere hasta que el mensaje en el tema podría ser consumido

0

Pregunta

Así que, me enfrenté a la situación interesante:

En mi prueba de integración puedo enviar datos a 2 temas, y que debe ser consumido por aplicación de la orden. En primer userTopic, entonces debe ser consumido userOrderTopic.

Cuando puedo enviar mis mensajes en la prueba, envía muy rápido, al mismo tiempo. Pero a veces, el orden de consumo por aplicación es diferente. (userOrder tema, luego userTopic) lo que rompe mi prueba en absoluto.

He encontrado algunos triks, cómo podía evitarlo - hilo de dormir, etc. Pero yo creo que es una mala solución.

Soy nuevo con kafka, como resultado con KafkaTestUtils. ¿Hay algún método, que podría comprobar que el mensaje en el tema fue consumido/cheque hasta que el mensaje se ha consumido?

Algo como esto:

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

o

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

P. S. en mi integración dentro de la prueba que no llegan a tener acceso a productor/consumidor.

O tal vez en primavera.kafka y la primavera.kafka.la prueba son otra de las herramientas para hacerlo de manera adecuada?

1

Mejor respuesta

0

KafkaTestUtils es sólo para el consumo de la prueba de los consumidores no aplicación real de los consumidores.

La solución no es fácil para esta condición de carrera; es necesario esperar a que el primer registro para ser consumido antes de enviar el segundo.

2021-11-23 21:03:32

Así, hay alguna forma de comprobar que el mensaje fue cosumed? Que parece hilo.el sueño no es mala idea
Gary Russell

Hay un par de diferentes técnicas, por ejemplo - si el agente de escucha de las llamadas de un servicio, agregue un simulacro de auxiliar de servicio en su caso de prueba y espere a ser llamado; - añadir una RecordInterceptor a la escucha de fábrica de envases en su caso de prueba y esperar a que el interceptor de ser llamado; - añadir un proxy en torno a la escucha de la cuenta atrás de un pestillo en el caso de prueba - ver stackoverflow.com/questions/53678801/... por ejemplo.

gracias por la explicación

En otros idiomas

Esta página está en otros idiomas

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