Primavera KafkaTestUtils: aguarde até que a mensagem no tópico deve ser consumido

0

Pergunta

Então, eu enfrentei uma situação interessante:

No meu teste de integração de eu enviar dados para 2 tópicos, e eles devem ser consumidos pelo aplicativo por ordem de chegada. Na primeira userTopic, em seguida, devem ser consumidos userOrderTopic.

Quando eu enviar minhas mensagens no teste, ele envia muito rapidamente, ao mesmo tempo. Mas, às vezes, a fim de se consumir pela aplicação é diferente. (userOrder tópico, então userTopic) que quebra o meu teste.

Eu encontrei alguns triks, como eu poderia evitá - lo- suspensão do thread, etc. Mas eu acredito que é uma má solução.

Eu sou novo com kafka, como resultado com KafkaTestUtils. Não há nenhum método, que poderia verificar que a mensagem no tópico foi consumida/verificar até que a mensagem foi consumido?

Algo como isto:

//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. na minha integração teste de eu não ter accsess produtor/consumidor.

Ou talvez na primavera.kafka /primavera.kafka.teste outro ferramentas para fazê-lo de forma adequada?

1

Melhor resposta

0

KafkaTestUtils é apenas para o consumo de testar os consumidores não aplicação real dos consumidores.

Não há solução fácil para essa condição de corrida; você precisa esperar para o primeiro registro para ser consumida antes de enviar a segunda.

2021-11-23 21:03:32

Então, existe alguma forma de verificar que a mensagem foi cosumed? Que parece thread.o sono não é má ideia
Gary Russell

Existem algumas técnicas diferentes, por exemplo, se a sua escuta de chamadas de um serviço, adicionar um mock/stub de serviço, que no seu caso de teste e aguarde para ser chamado; - adicionar um RecordInterceptor para o ouvinte recipiente de fábrica no seu caso de teste e aguarde o interceptor para ser chamado; - adicionar um proxy em torno do ouvinte, que faz a contagem regressiva de uma trava no caso de teste - ver stackoverflow.com/questions/53678801/... para um exemplo.

obrigado pela explicação

Em outros idiomas

Esta página está em outros idiomas

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