就像这样 @KafkaListener(topics = "test") public void m1(){ log.info("123"); } @KafkaListener(topics = "test") public void m2(){ log.info("456"); } 然后控制台就会只打印123不打印456,这种问题怎么解决呢?
@Kafkalistener
默认消费者组名是同一个,也就是说,消息只会发给一个方法,如果你分发消息处理,就从这个方法分发消息。如果你想都收到消息,是相同的消息,就是订阅者模式,定义成不同的消费者组就可以了。
@KafkaListener(id = "topics = "test", clientIdPrefix = "myClientId")
或
@KafkaListener(id = "topics = "test", groupId = "不要相同")
半兽人大佬,你好.如果这个topic是我自己手动创建的,我创建的时候没有指定groupId,但是我在yml/properties配置文件中指定了groupId的值.这样也是不可以的吗?
如果你在配置文件中指定了groupID,那么就意味着你的消费者组是固定了。
不可以指的是什么呢?
我换个问法,在一个类中不可以被两个不同的方法消费可以同时消费同一个topic中的消息吗?
如果2个方法都获得相同的消息是可以的(不同的消费者组),上面已经解释过了。
如果想平分消息,只能手动指定topic中分区。
不太清楚你为什么要这样使用,并行消费可以使用下面的,但是都走同一个方法。
原因是要对数据进行判断,写到一个方法中会影响在正常情况下数据的变化,这个属性我在配置文件中配置了,如果在配置文件中配置了groupId,在@KafkaListener(id = "topics = "test", groupId = "*")也配置了不同的消费组,那这样的话是配置文件中的会生效还是在监听器中生效呢?
啊好了,在监听器中的生效.谢谢半兽人大佬!
大佬,意思就是两个监听器无法平摊同一个topic中的消息是吧?
这个问题的核心是消费组哦。
你的答案