我在交换对象的标题中设置了一个List与其他几个标头并将其路由到ActiveMQ
。
exchange.getOut().setHeader("testList", testList);
exchange.getOut().setHeader("testObject", testObject);
exchange.getOut().setHeader("header1", "value1");
exchange.getOut().setHeader("header2", "value2");
在我访问交换对象标题的下一个路线中,"testList"
和testObject
不存在!但是剩余的标题存在(exchange.getIn().getHeader
)。
我们不能发送除String之外的任何标题(列表或任何其他对象)吗?
答案 0 :(得分:6)
根据Camel文件:
对于exchange.in.header,以下规则适用于标头 值:
值必须是基元或其计数器对象(例如Integer,Long,Character)。类型,字符串,CharSequence,日期, BigDecimal和BigInteger都转换为它们的toString() 表示。所有其他类型都被删除。
可在此处找到更多信息:http://camel.apache.org/jms 或者http://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html
请参阅Camel手册部分:发送时的消息格式
Camel会删除不允许的标头类型,但您可以使用 vm 或 seda 组件而不是 activemq 。或者,您可以将列表转换为XML或JSON,将其转换为字符串并发送此字符串 通过JMS。