簡體   English   中英

Spring Kafka KafkaListener 在有斷點時拾取消息,並非沒有

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM