我正在使用基于弹簧的骆驼路由。我想将消息路由到接受 java.jms.Message 的方法,因为我必须提取一些属性。这些属性由其他人设置,并在邮件头中添加了地图。
以下是我的驼峰配置
< camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"
autoStartup="true">
< route id="testRoute" autoStartup="true" >
< from uri="activemq:success.queue" />
< to uri="bean:testService?method=testMessage" />
< /route>
< /camelContext>
以下是我的方法签名
public void testMessage(java.jms.Message message){
//extract some header properties and process them
}
能做到吗?如果是的话,那该怎么办呢......我到底错过了什么?
(接受字节数组工作,但对我没有任何用处,我想要整个消息)
如果 java.jms.Message 无法使用,那么还有其他任何方法可以访问这些消息头/属性(驼峰上下文或其他内容)
注意:我不应该使用MessageListener,我只能使用驼峰路由。
答案 0 :(得分:0)
Camel通过将JMS属性放入Camel标头来为您解决此问题。
public void testMessage(Exchange e){
String myHeader = e.getIn().getHeader("MyHeader",String.class);
}
虽然这可能正是您想要的,但您也可以通过参数绑定自动将标题作为输入。
public void testMessage(@Header("JMSCorrelationID") String correlationID, @Header("JMSDestination") Destination dest, @Body byte[] body) {
// do stuff
}