Camel将String发送到JMS队列,但检索字节数组

时间:2014-04-29 21:02:56

标签: java jms apache-camel

我有一个与Camel和JMS消息相关的问题。

我的系统包含一个JMS主题和一个JMS队列,比如TopicInput和QueueInput。我的进程侦听QueueInput并处理发送到此队列的消息。结果然后传递给另一个主题,比如TopicOutput。

处理消息的过程使用Java和Apache Camel。我的Camel路由发出的响应是一个字符串。因此,String被发送到TopicOutput。

我的问题是,当我直接将消息发送到QueueInput时,一切都很好,我从TopicOutput获得了一个String响应。但是,如果我将请求消息发送到内部桥接到QueueInput的TopicInput,我从TopicOutput获得的结果将是String的字节数组表示。

有谁知道这会怎么样?我甚至不确定这是Camel的问题还是JMS问题。

任何建议或提示都会有所帮助。

非常感谢。

1 个答案:

答案 0 :(得分:2)

不完全确定你的逻辑中究竟发生了什么。

JMS有BytesMessage和TextMessage。要直接获取字符串,消息必须是TextMessage,否则必须从字节数组构造String,您可以从消息中检索它。

使用Camel发送消息时,Camel会尝试将有效负载映射到最佳JMS消息类型。请查看此表out

为了确保始终生成TextMessage(解析为String),请在将有效负载与JMS生成器一起发送之前将其转换为String。确保您了解流程中每个步骤中的消息类型和有效负载,然后您应该轻松解决问题。