【发布时间】:2019-08-27 13:43:18
【问题描述】:
我正在将我们的一项服务从 spring boot 1.5 升级到 2,现在我看到一个与 kafka producer 有关的异常,该异常与将 messageHistory 写入标头有关。这是收到的异常:
org.springframework.kafka.listener.ListenerExecutionFailedException: Listener failed; nested exception is java.lang.IllegalArgumentException: Incorrect type specified for header 'history'. Expected [class org.springframework.integration.history.MessageHistory] but actual type is [class org.springframework.kafka.support.DefaultKafkaHeaderMapper$NonTrustedHeaderType].
通过深入研究代码,看起来在转换MessageHistory 标头https://github.com/spring-projects/spring-kafka/blob/14157742d7fa51ce8a22dfbdccc2e3c5b43c1c6f/spring-kafka/src/main/java/org/springframework/kafka/support/DefaultKafkaHeaderMapper.java#L253-L275 时在DefaultKafkaHeaderrMapper 中引发了异常,因此任何人都可以帮助我理解:
应该是
MessageHistory之前写入的消息 发送中?如果 1) 的答案是肯定的,那么将
MessageHistory设置为受信任包的正确方法是什么?如果 1) 为否,可能是哪些操作不正确以防止将历史记录写入标头?
提前致谢!
【问题讨论】:
标签: spring-integration spring-kafka