多个KafkaListener类可以收听同一主题吗? [英] Can multiple KafkaListener classes listen to the same topic?

查看:42
本文介绍了多个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆