在Spring Boot应用程序中,我使用带有@KafkaListener注释的类作为消息侦听器。我想在我的应用程序中添加一个ConsumerRebalanceLister来管理重新平衡时的缓存数据。
如何将ConsumerRebalanceListener添加到ConcurrentKafkaListenerContainerFactory。 documentation说应该在ContainerProperties对象上设置它。目前尚不清楚如何访问该对象以进行设置。此外,ConcurrentKafkaListenerContainerFactory似乎丢弃了重新平衡侦听器,因为它在创建侦听器容器实例时会创建一个新的ContainerProperties对象。
在this commit之前,有一种方法可以直接在ConcurrentKafkaListenerContainerFactory上直接设置重新平衡监听器。
答案 0 :(得分:2)
考虑在ConcurrentKafkaListenerContainerFactory
上使用此方法:
/**
* Obtain the properties template for this factory - set properties as needed
* and they will be copied to a final properties instance for the endpoint.
* @return the properties.
*/
public ContainerProperties getContainerProperties() {
您可以在此处添加ConsumerRebalanceListener
。您@Autowired
自动配置的ConcurrentKafkaListenerContainerFactory
并执行上述注入操作:
@Autowired
private ConcurrentKafkaListenerContainerFactory containerFactory;
@PostConstruct
public void init() {
this.containerFactory.getContainerProperties()
.setConsumerRebalanceListener(myConsumerRebalanceListener());
}
@Bean
public ConsumerRebalanceListener myConsumerRebalanceListener() {
return new ConsumerRebalanceListener() {
...
};
}