如何在spring boot的单个@KafkaListener方法上设置多个containerFactory


@KafkaListener(containerFactory = "syliusKafkaListenerContainerFactory",
topics = "#{__listener.getTopics()}",
groupId = "${tenantprop.kafkaConfigProperties.listenerGroupId}")
public void listenEvent(@Payload SyliusEvent syliusEvent,
@Header(KafkaHeaders.RECEIVED_TOPIC) String topic, Acknowledgment acknowledgment)
throws Exception {}

在上面的方法中,这个监听器收到来自不同国家和不同主题的呼叫。除了containerFactory,所有国家的一切都一样。

所以,而不是为每个国家创建不同的监听器,有没有办法改变containerFactory为每个国家保持相同的listenEvent方法。E、不要为每个国家创建不同的听众。

此外,如果来自一个国家的数据非常大,导致完全侦听器阻塞,没有其他国家可以放置数据,有什么解决办法吗?

在网上找了,但没有找到任何具体的东西。如有任何帮助,不胜感激。

不,没有办法为不同的集装箱工厂提供单个@KafkaListener。最终的消费者侦听器与它的容器所基于的工厂紧密相连。所以,你必须为你的配置中的每个containerFactory提供单独的@KafkaListener。你可以考虑查看Kafka Streams,最终将来自不同消费者的初始数据连接到单个主题。那么,你确实会在一个话题上有一个@KafkaListener,而不是一个containerFactory

最新更新