![](/img/trans.png)
[英]How I can consume message form Kafka using KafkaTemplate without @KafkaListener in Java Spring? RabbitMQ analogue
[英]Spring Kafka KafkaListener picks up message when there's a breakpoint, doesn't without one
我有一個簡單的集成測試,它啟動嵌入式 kafka,向主題發送消息,將有效負載分配給變量並比較值。
聽眾:
@KafkaListener( topics = "topic.name", groupId = "group-id")
public void receive(@Payload ConsumerRecord<?, ?> consumerRecord) {
setPayload(consumerRecord.toString());
}
測試(使用等待延遲)
@Test
public void canReceiveAMessage() {
producer.send(topic, TEST_MESSAGE);
await().pollDelay(10, TimeUnit.SECONDS).atMost(30, TimeUnit.SECONDS).untilAsserted(()
-> assertThat(consumer.getPayload()).contains(TEST_MESSAGE);
}
我假設斷點解決了某種競爭條件 - 但是,使用斷點,它解決的速度超過 30 秒,所以我不確定它似乎觸發了什么使它工作。 我可以驗證它的 rest 是否正常,因為它適用於斷點。
編輯:如果我將消費者配置發送到 AUTO_OFFSET_RESET_CONFIG="earliest",它會可靠地通過。 現在,我不想要這個長期的,它想要“最新” - 有沒有可靠的解決方案?
斷點導致生產者線程刷新其批次。
調用producer.send(topic, TEST_MESSAGE).get(Duration.ofMillis(100);
以正確等待
您可以將ConsumerRebalanceListener
添加到容器配置中,並在發送測試消息之前等待分配分區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.