2013-08-19 2 views
1

Я использую весеннюю маршрутизацию верблюда. Я хочу передать сообщение методу, который принимает java.jms.Message, так как мне нужно извлечь некоторые свойства. Эти свойства задаются кем-то другим с картой в заголовке сообщения.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

Camel wrapps это для вас, разместив 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 
    } 
Смежные вопросы