java - Camel序列化消息内容列表

标签 java apache-camel activemq

我收到一条发送到 CXF 端点的 SOAP 消息,其中包含 Long 和 String 值。 例如。 [5、'测试']

接收消息的camel路由已经使用dataformat=POJO 我需要将 ActiveMQ 上的这些参数发送到另一个应用程序。

如果我使用:

<convertBodyTo type="java.lang.String"/>     

日志显示正文仅包含 5 个。未发送“测试”。

我尝试在转换为字符串之前转换为 POJO,但我找不到有关制作 TypeConverters 的正确文档(说真的,谁能阅读 this 并从中找出实际代码?)

例如。

<convertBodyTo type="com.company.InfoPojo"/>
<convertBodyTo type="java.lang.String"/>     

如果我尝试将 CXF 数据转发到队列而不进行任何转换,我会得到:

Failed to extract body due to: javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: Forbidden class org.apache.cxf.message.MessageContentsList! This class is not allowed to be serialized. Add package with 'org.apache.activemq.SERIALIZABLE_PACKAGES' system property..

有人知道这里最好的选择是什么吗?

谢谢

最佳答案

在将参数发送到队列之前,您应该将它们编码为 XML 或 JSON(或您喜欢的任何其他格式)。然后,消费者需要对它们进行解码。

无需搞乱类型转换器。 Camel 的数据格式使这变得非常简单:https://github.com/apache/camel/blob/master/components/readme.adoc#data-formats

JSON:https://github.com/apache/camel/blob/master/docs/user-manual/en/json.adoc

JAXB:https://github.com/apache/camel/blob/master/components/camel-jaxb/src/main/docs/jaxb-dataformat.adoc

关于java - Camel序列化消息内容列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900802/

相关文章:

java - 在android中,如何从图像按钮中提取图像?

java - session.invalidate() 的奇怪问题

tomcat jms jndi命名异常

java - 在java中读取dbConnection.properties文件以使用eclipse连接到数据库

java - 闪屏跳过触摸事件

java - Camel管道如何与jms端点一起工作

apache-camel - 挂起 ActiveMQ 传输和连接线程

jackson - 调用 Camel-jackson API 时操作数堆栈上的类型错误

java - 将 ActiveMQ 与多个消费者实例结合使用

java - 从 ActiveMQ DestinationSource.getQueues 响应正确迭代队列