为什么我的 spring 云流配置创建了多个 kafka 消费者
Why is my spring cloud stream config creating multiple kafka consumers
这不是什么大问题,但我很好奇一些额外的流消费者来自哪里,如果这是我可以更改的设置。
我有一个针对本地 Kafka 代理的非常简单的 spring 云流消费者设置。这是 spring 配置
spring:
cloud:
stream:
bindings:
consumer-in-0:
destination: test-topic
group: test-group
消费者class本身:
@Bean
Consumer<Message<String>> consumer() {
return message -> System.out.println("Got it: " + message.getPayload());
}
当我 运行 应用程序时,我可以看到在输出中创建了 3 个消费者。但是当我检查本地代理中的消费者组成员时,它 always 只有一个消费者,并且 always 第二个消费者创建(即与客户编号 test-group-2
)
为清楚起见,我使用 Spring 引导版本 2.3.4.RELEASE
和云依赖版本 Hoxton.SR10
。
这是 pom 中的依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependencies>
为什么我有 3 个消费者?为什么只有第二个真正在听 Kafka 话题?
在启动期间,会创建一个临时使用者以获取有关为该主题配置的分区的信息。
第二个消费者才是真正的消费者
如果类路径上有执行器(实际上是 Micrometer),KafkaBinderMetrics
会创建另一个使用者,以便它可以计算延迟。它实际上不消耗任何东西。
这不是什么大问题,但我很好奇一些额外的流消费者来自哪里,如果这是我可以更改的设置。
我有一个针对本地 Kafka 代理的非常简单的 spring 云流消费者设置。这是 spring 配置
spring:
cloud:
stream:
bindings:
consumer-in-0:
destination: test-topic
group: test-group
消费者class本身:
@Bean
Consumer<Message<String>> consumer() {
return message -> System.out.println("Got it: " + message.getPayload());
}
当我 运行 应用程序时,我可以看到在输出中创建了 3 个消费者。但是当我检查本地代理中的消费者组成员时,它 always 只有一个消费者,并且 always 第二个消费者创建(即与客户编号 test-group-2
)
为清楚起见,我使用 Spring 引导版本 2.3.4.RELEASE
和云依赖版本 Hoxton.SR10
。
这是 pom 中的依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependencies>
为什么我有 3 个消费者?为什么只有第二个真正在听 Kafka 话题?
在启动期间,会创建一个临时使用者以获取有关为该主题配置的分区的信息。
第二个消费者才是真正的消费者
如果类路径上有执行器(实际上是 Micrometer),KafkaBinderMetrics
会创建另一个使用者,以便它可以计算延迟。它实际上不消耗任何东西。