多个KafkaListener类可以收听同一主题吗? [英] Can multiple KafkaListener classes listen to the same topic?
本文介绍了多个KafkaListener类可以收听同一主题吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个包含多个事件(不同类型)的Kafka主题,我想在单个应用程序中在不同的处理程序类中处理这些事件。所以我的问题是--我是否可以创建两个使用相同主题的类(Spring组件),但每个类处理不同的事件(来自同一主题)?
@Component
@KafkaListener(topics = "topicA")
public class SomeClass {
@KafkaHandler
public void handleEventA(EventA eventA) {
}
}
@Component
@KafkaListener(topics = "topicA")
public class AnotherClass {
@KafkaHandler
public void handleEventB(EventB eventB) {
}
@KafkaHandler
public void handleEventC(EventC eventC) {
}
}
推荐答案
通常情况下,所有@KafkaHandler
都在同一个类中。
您可以随心所欲,但每个侦听器需要位于不同的使用者组中,并且您需要一个默认方法来丢弃您不感兴趣的事件。
@Component
@KafkaListener(id = "some", topics = "topicA")
public class SomeClass {
@KafkaHandler
public void handleEventA(EventA eventA) {
}
@KafkaHandler(isDefault = true)
public void handleOthers(Object others) {
// discard
}
}
@Component
@KafkaListener(id = "another", topics = "topicA")
public class AnotherClass {
@KafkaHandler
public void handleEventB(EventB eventB) {
}
@KafkaHandler
public void handleEventC(EventC eventC) {
}
@KafkaHandler(isDefault = true)
public void handleOthers(Object others) {
// discard
}
}
这篇关于多个KafkaListener类可以收听同一主题吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文