簡體   English   中英

帶有重試模板的用於 Apache Kafka 偵聽器的 Junit

[英]Junit for Apache Kafka Listener with retry Template

需要關於如何為 Kafka 消費者類編寫集成 JUnit 測試的指導,以斷言消息消費被重試了多少次。 我在 Kafka 配置中添加了一個重試模板。

配置類

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> listernerFactory(ConsumerFactory<String, String> kafkaConsumerFactory) {
    ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(kafkaConsumerFactory);
    factory.setRetryTemplate(kafkaRetry());
    return factory;
}
public RetryTemplate kafkaRetry(){
    RetryTemplate retryTemplate = new RetryTemplate();
    FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
    fixedBackOffPolicy.setBackOffPeriod(2*1000l);
    retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
    SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
    retryPolicy.setMaxAttempts(3);
    retryTemplate.setRetryPolicy(retryPolicy);
    return retryTemplate;
}

消費類

 @KafkaListener(topics = "${kafka.topic}", groupId = "${kafka.group-id}",
        containerFactory = "listernerFactory")
public void consume(String messagePayload) {
    logger.info("Consumed message: {}", messagePayload);
}

期待 Junit

  1. 向主題發送消息。
  2. 斷言消費者被調用了多少次。

注意:- 我試過搜索,但在大多數情況下,他們在測試類中創建一個新的消費者來驗證而不是調用實際的消費者類。

使RetryTemplate成為@Bean並自動將其連接到您的測試中。

然后,您可以向模板添加一個RetryListener並斷言onError()方法被調用了預期的次數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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