65.16. 互操作性
65.16.1. JMS 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在操作 Kafka 和 JMS 时,可能需要将 JMS 标头合并到其预期的类型中。
例如,当消耗来自 Kafka 的消息时,会使用 JMS 标头并将其发送到 JMS 代理,这些标头首先会反序列化到一个字节数组。然后,camel-jms 组件会尝试将此字节数组合并到所使用的特定类型中。但是,原始端点以及其ef的代码设置可能会影响数据如何序列化和反序列化。因此,不可能假定字节阵列的数据类型。
要解决这个问题,我们提供了一个自定义标头反序列化器,以强制 Kafka 根据 JMS 规格反序列化 JMS 数据。此方法可确保标头被 camel-jms 组件正确解释和处理。
由于每个可能的系统和端点的固有复杂性,此反序列化器可能无法覆盖所有可能的情况。因此,它以模型的形式提供,可以修改和/或根据每个应用程序的具体需求进行调整。
要使用此解决方案,您需要通过包含 headerDeserializer 选项来修改管道消费者末尾的路由 URI。例如:
from("kafka:topic?headerDeserializer=#class:org.apache.camel.component.kafka.consumer.support.interop.JMSDeserializer")
.to("...");
from("kafka:topic?headerDeserializer=#class:org.apache.camel.component.kafka.consumer.support.interop.JMSDeserializer")
.to("...");