我有一个与Camel和JMS消息相关的问题。
我的系统包含一个JMS主题和一个JMS队列,比如TopicInput和QueueInput。我的进程侦听QueueInput并处理发送到此队列的消息。结果然后传递给另一个主题,比如TopicOutput。
处理消息的过程使用Java和Apache Camel。我的Camel路由发出的响应是一个字符串。因此,String被发送到TopicOutput。
我的问题是,当我直接将消息发送到QueueInput时,一切都很好,我从TopicOutput获得了一个String响应。但是,如果我将请求消息发送到内部桥接到QueueInput的TopicInput,我从TopicOutput获得的结果将是String的字节数组表示。
有谁知道这会怎么样?我甚至不确定这是Camel的问题还是JMS问题。
任何建议或提示都会有所帮助。
非常感谢。
答案 0 :(得分:2)
不完全确定你的逻辑中究竟发生了什么。
JMS有BytesMessage和TextMessage。要直接获取字符串,消息必须是TextMessage,否则必须从字节数组构造String,您可以从消息中检索它。
使用Camel发送消息时,Camel会尝试将有效负载映射到最佳JMS消息类型。请查看此表out。
为了确保始终生成TextMessage(解析为String),请在将有效负载与JMS生成器一起发送之前将其转换为String。确保您了解流程中每个步骤中的消息类型和有效负载,然后您应该轻松解决问题。