簡體   English   中英

如何使用 spring 引導在一個消費者 class 中順序讀取 2 個 Kafka 主題?

[英]How to read 2 Kafka topics sequentially in one consumer class using spring boot?

我有 2 個 Kafka 主題 A 和 B。我希望每次我的消費者啟動時,它都會首先轉到主題 A。 主題 A 包含有關主題 B 的信息,我將依賴該信息從主題 B 中獲取數據。

所以本質上我需要先閱讀主題 A,然后再閱讀主題 B,我只需要在每次重新啟動程序時執行一次。

我能想到的事情如下:

@KafkaListener(topics = {"A" , "B"})

或者:

@KafkaListener(topics = "A")
public void receive() {}

@KafkaListener(topics = "B")
public void receive() {}

兩者都不保證閱讀的順序。

在完成主題 A 的最新更新后,如何強制我的程序首先閱讀主題 A,並且僅閱讀主題 B 的 go?

使用這樣的東西...

@KafkaListener(id = "bReceiver", autoStartup = "false, topics = "B")
public void receive() {}

設置idleEventInterval並添加

@Autowired
KafkaListenerEndpointRegistry registry;

@EventListener(condition = "event.listenerId == 'aReceiver`)
public void eventListener(ListenerContainerIdleEvent event) {
    this.registry.getListenerContainer("aReceiver").stop(() -> { });
    this.registry.getListenerContainer("bReceiver").start();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM