【问题标题】:Best way to mock Kafka on junit test?在junit测试中模拟Kafka的最佳方法?
【发布时间】:2021-03-06 09:53:18
【问题描述】:

我有一个使用 Kafka 消费者和生产者的 Spring Boot 应用程序。 Kafka的所有配置都在application.yml上

spring:
    kafka:
        consumer:
            enable-auto-commit: true
            key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
            value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
            bootstrap-servers: kafka.dev-streams.svc.cluster.local:9092
            group-id: dev.client
        producer:
            bootstrap-servers: kafka-0.kafka-headless.dev-streams.svc.cluster.local:9092,kafka-1.kafka-headless.dev-streams.svc.cluster.local:9092,kafka-2.kafka-headless.dev-streams.svc.cluster.local:9092
            key-serializer: org.apache.kafka.common.serialization.StringSerializer
            value-serializer: org.apache.kafka.common.serialization.StringSerializer
            retries: 3

一位消费者的示例:

        @KafkaListener(topics = { "${kafka.topic.internal.request}" })
        @Override
        public void processRequest(@Payload String message,
                        @Header(name = KafkaHeaders.RECEIVED_MESSAGE_KEY, required = false) String key) {
                super.processRequest(message, key);
        } 

我如何模拟 kafka 以使用 Junit 测试而不使用引导服务器来获取有关消费者的一些消息?

【问题讨论】:

  • 文档的testing section 有帮助吗?
  • 不多。它仍然没有解决我的问题。
  • 为什么不呢?它展示了如何测试消费者

标签: java spring-boot junit apache-kafka


【解决方案1】:

您可以使用嵌入式 Kafka,它是在测试期间运行的内存中 Kafka 代理。 这里有一些关于如何使用它的文章:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2012-05-15
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多