2017-10-04 7 views
0

Activty CamelタスクからActiveMQキューにメッセージを送信しようとしています。アクティビティをCamelが受け取ったときに再開する必要があります。私が理解しているように、メッセージがキューから受信されたときに、Camelが正しいアクティビティタスクにルーティングするためにそれを識別できるようなプロパティが欠落しています。Camel ActiveMQルートからActivitiタスクを再開する

このようにBusiness key is Null例外が発生し、ルートが失敗します。

from("activiti:SampleProcess:myCamelTask") 
.to("activemq:queue:myQueue"); 

予想されたように、私は、受信経路におけるPROCESS_ID_PROPERTY又はPROCESS_KEY_PROPERTYのいずれかをハード場合(IDが一致した場合)、メッセージが正しくルーティングされます。

from("activemq:queue:myQueue") 
    .setBody(constant("test body")) 
    .setProperty(PROCESS_ID_PROPERTY, constant("50")) 
// .setProperty(PROCESS_KEY_PROPERTY, constant("CUSTOM-KEY")) 
.to("activiti:SampleProcess:receiveAsyncPing"); 

は、どのように私はそれに応じて設定することができるように受信ルートでのプロパティのいずれかを得ることができますか?

これに近づくための推奨方法がありますか?

答えて

0

良い質問です。私はこれを取り扱わ 方法は、setPropertyを()コマンドを使用して、ルート内PROCESS_KEYを注入することである。

は、私は「バー」にプロセスキー(ビジネスキー)を設定する場合についてを参照してください:

from(startProcessEndpoint) 
    .log(LoggingLevel.INFO, logMsg3) 
    .setProperty("PROCESS_KEY_PROPERTY",foo) 
    .setBody(constant("bar")) 
.to("activiti:testCamelTask:receive") 

あなたは定数を使用したいいけない場合、以下に示すように、あなたは、ルート内のExchangeオブジェクトへのアクセス権を持っていると表現を使用することができます。このことができます

Expression foo = new Expression() { 
     @Override 
     public <T> T evaluate(Exchange exchange, Class<T> aClass) { 
      return (T) "foo"; 
     } 
    }; 

希望、 グレッグ

+0

グレッグ、あなたの答えをありがとう!しかし、その時点で、元のメッセージをActiveMQに送信したルートとどのように一致していますか?また、私はやや混乱している、ビジネスキーはfooまたはbarとして設定されていますか? – yannis

関連する問題