Springboot kafka消费者没有收到消息,另一个已经收到消息

时间:2021-07-06 14:29:10

标签: apache-kafka kafka-consumer-api spring-kafka spring-cloud-stream-binder-kafka

我是 KAFKA 的新手,需要帮助

我有 2 个应用程序 (springboot),它们是相同的/仅具有不同端口的副本。 http://本地主机:8080/ http://localhost:8081/

他们都是消费者

两人听题目XXX

我还有一个 APP 扮演制作人的角色。

每当我向主题 XXX 发送内容时。

只有其中一个消费消息,另一个不消费。

我单独测试了两个人,如果他们单独听,他们会正常听,但如果他们一起听,只有一个人会听。

我正在使用

         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-kafka</artifactId>
            <version>3.0.0.RELEASE</version>
        </dependency>
spring.cloud.stream.kafka.binder.autoCreateTopics=true
spring.cloud.stream.kafka.binder.headers=type
spring.cloud.stream.kafka.default.consumer.ackEachRecord=true
spring.cloud.stream.kafka.default.consumer.enableDlq=true
spring.cloud.stream.kafka.default.consumer.standardHeaders=both
spring.cloud.stream.kafka.default.consumer.dlqName=api***.d**.api***

我的听众


@StreamListener(target=SomeString.TOPIC, condition = "headers['type']=='***' or headers['type']=='***'")
    public void handle(GenericMessage<String> message) throws BusinessException {
   
***
}

1 个答案:

答案 0 :(得分:0)

<块引用>

Apache Kafka Binder 实现将每个目的地映射到一个 Apache Kafka 主题。消费者组直接映射到同一个 Apache Kafka 概念。分区也直接映射到 Apache Kafka 分区也是如此。

检查 kafka 消费者群体行为 -> https://kafka.apache.org/documentation/#consumerconfigs_group.id

如果 kafka 消费者有相同的 groupId 只是一个听消息,你应该给他们不同的 groupId

8080 中的应用 -> spring.cloud.stream.bindings.<channelName>.group=consumer-group-1

8081 中的应用 -> spring.cloud.stream.bindings.<channelName>.group=consumer-group-2