我有三个拥有多个实例的消费者,这些实例都消耗相同的主题。我希望每个消费者只使用一次主题。为此,我创建了一个消费者组。从我读到的内容来看,Kafka应该足够聪明,选择一个服务实例来消费主题,但这种情况并没有发生,所有消费者的所有实例都在消费主题
我认为这可能与三个拥有相同组名的消费者有关,所以我关闭了两个消费者,留下一个消费者有两个实例,但我仍然看到两个消费者进入数据库的记录应该只选择一个要插入数据库的实例。
我做错了什么或遗失了下面的东西?
Application.yml
spring:
cloud:
stream:
bindings:
input-data:
destination: publisheddata.t
group: publisheddata
kafka:
bindings:
input:
consumer:
autoCommitOffset: false
binder:
auto-create-topics: true
kafka:
mode: raw
spring:
cloud:
stream:
kafka:
binder:
brokers: kafka:9092
zk-nodes: kafka:2181
Channels.java
public interface Channels {
String INPUT_DATA = "input-data";
@Input(INPUT_DATA)
SubscribableChannel dataInput();
}
DataHandler.java
@EnableBinding(Channels.class)
@Configuration
public class DataMessageHandler {
@StreamListener(Channels.INPUT_DATA)
public void handle(Message<?> message) {
... handling message ...
}
答案 0 :(得分:0)
以后任何人都会遇到这个问题,经过几天的研究后我发现问题出在我使用的{Spring,我正在使用的Brixton.RELEASE
版本,一旦我将其更新为{{ 1}}这解决了我的问题