【发布时间】:2016-12-27 18:49:39
【问题描述】:
我有多个生产者可以向一个 kafka 主题发送多种类型的事件。
而且我有一个必须消费所有类型消息的消费者。每种类型的消息都有不同的逻辑。
@KafkaListener(topics = "test", containerFactory = "kafkaListenerContainerFactory")
public void handleEvent(Message<EventOne> event) {
logger.info("event={}", event);
}
但在这种情况下,所有消息都来到这个方法,不仅仅是 EventOne
如果我实现了两种方法(针对每种类型的消息),那么所有消息都只使用一种方法。
如果我这样实现监听器:
@KafkaListener(topics = "test", containerFactory = "kafkaListenerContainerFactory")
public void handleEvent(Message<?> event) {
logger.info("event={}", event);
}
然后我得到异常: org.springframework.kafka.KafkaListenerEndpointContainer#0-0-kafka-listener-1] 错误 org.springframework.kafka.listener.LoggingErrorHandler - 处理时出错:ConsumerRecord java.lang.IllegalArgumentException:无法识别的类型:[null]
请告诉我如何实现多类型消费者?
【问题讨论】:
标签: java spring apache-kafka