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 に答える