1

我正在使用基于弹簧的骆驼路由。我想将消息路由到一个接受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,我只能使用骆驼路由。

4

1 回答 1

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 
  }
于 2013-08-19T20:31:34.197 回答