我試圖將多個主題加載到單個@KafkaListener
,但由於我相信它正在尋找一個常量值,但初始化topics
變量從application.yml
文件導致的問題,我想知道如果有人可以幫我解決這個問題,或者提供我如何將多個Kafka主題加載到單個KafkaListener中的方向。啓用@KafkaListener從application.yml文件中獲取可變主題名稱
我能夠通過將其在一個逗號分隔的對象聽在同一@KafkaListener
多個主題,如下圖所示:
@KafkaListener(topics = {
"flight-events",
"flight-time-events",
"service-events",
"flight-delay-events"
})
我知道我可以做一個物體與代表的主題逗號分隔值,但我希望能夠通過配置文件添加主題,而不是更改代碼庫中的代碼。
我認爲可能存在的問題是@KafkaListener需要一個常量值,而我無法將一個註釋定義爲一個常量,有沒有辦法解決這個問題?從@Gary羅素從這個GitHub的問題提供了
KafkaWebSocketConnector.java
@Component
public class KafkaWebSocketConnector
{
@Value("${spring.kafka.topics}")
private String[] topics;
@KafkaListener(topics = topics)
public void listen(ConsumerRecord<?, Map<String, String>> message)
{
log.info("Received messages on topic [{}]: [{}]", message.topic(), message.value());
String dest = "/" + message.topic();
log.info("destination = {}", dest);
log.info("msg: {}", message);
messageTemplate.convertAndSend(dest, message.value());
}
}
application.yml
spring:
kafka:
consumer:
auto-offset-reset: earliest
group-id: kafka-websocket-connector
topics: flight-events,
flight-time-events,
canceled-events,
pax-events,
flight-delay-events
這就是所謂的*剽竊* ...你有沒有創建GH問題的問題,請。 –
對不起Artem,我知道你是Gary的標籤團隊,是否有更好的引用,我可以用這個來解決你的問題? – terrabl
你必須添加鏈接到GH問題的更多信息,並接受你的答案。將來請記住,我們可能無法在線回答有關GH的問題。這就是爲什麼SO是最好的開始。 –