如何将@EventListeners与Kafka poll()方法结合使用?

zc0qhyus  于 2022-11-21  发布在  Apache
关注(0)|答案(1)|浏览(125)

将有一个来自Kafka的事件从一些其他的应用程序,我想听取该事件使用Spring的事件。事件是通过Kafka,但我如何听取该事件?

`class Event{
String name;
int id;

}
`

传输的事件类型为Event类,但如何使用用于Kafka事件的poll?
示例:@EventListener public void handleEvent(){ <KafkaEvent>.poll() }我不明白应该如何在@EventListener方法中调用poll

ncecgwcz

ncecgwcz1#

这个问题的解决方案是Kafka的spring-boot扩展和@KafkaListener注解。您应该使用@KafkaListener注解而不是@EventListener来处理来自Kafka的事件。它简单、稳定,是首选的解决方案。
然而,如果你仍然想使用@EventListener,你可以将ApplicationEventPublisher注入到负责从Kafka轮询消息的类中(例如,通过@KafkaListener),下面的示例代码,但是它是过度设计的,引入了很多不必要的复杂性。
可能,但不是推荐的解决方案:

@Component
class SomeKafkaHandler{

@Autowired
ApplicationEventPublisher eventPublisher;

@KafkaListener
void handleEvent(Event event){
   //forward to @EventListener
   eventPublisher.publishEvent(event);
  }
}

相关问题