2017-03-21 11 views
0

私は、異なるMDBクラスの異なるエンティティ(エンティティごとに1つのMDBクラス)としてメッセージを受け取るWildfly 8.2(デフォルトのHornetQを持つJMS)にキューを持っています。同様のメッセージの同じMDBインスタンス

私はJMSTypeを使用してエンティティAに関連するメッセージをMDB_Aに送信します。

今、私は、エンティティAの同じインスタンスに関連するすべてのメッセージがMDB_Aの同じインスタンスによって管理されることを望みます。私はキューにメッセージを挿入する前に、同じ値のJMSXGroupIDプロパティを設定します。

次に、MDBのidentifierとメッセージのJMSXGroupIDをMDBに出力します。同じJMSXGroupIDを持つメッセージは、異なるMDBによって管理されていることがわかります。

私はthisスレッドがこの問題をAciveMQで話していることを発見しましたが、私はHornetQを使用していますので、この場合の動作は分かりません。

は、そのスレッドでは答えはこの場合

たメッセージ・リスナーは、MDBコンテナではない 個々のMDBのインスタンスです。 MDBコンテナは、受け取ったメッセージを処理するためにmdb インスタンスを自由に選択することができます。JMSXGroupID はここでは意味がありません。

同じJMSXMessageIDを持つメッセージが異なるインスタンスによって処理される場合、このプロパティの目的は何ですか?メッセージのJMSTypeを設定するのと同じではありませんか?

セレクタなしでキューのメッセージのJMSXMessageIDを設定すると、複数のインスタンスを使用できる場合でも、すべてのメッセージを同じMDBインスタンスで処理できることがわかりました。

答えて

0

特定の種類のメッセージが特定のMDBによって処理されるように、JMSメッセージセレクタを使用できます。

次のようにJMSメッセージのプロパティを設定している場合たとえば、:

message.setStringProperty("mdbType", "orderMDB") 

または

message.setStringProperty("mdbType", "registrationMDB") 

を次に、各MDBのために、あなたはそれが処理に興味があるメッセージを指定することができますがそれに注釈を付けることによって:

@ActivationConfigProperty(propertyName = "messageSelector", 
     propertyValue = "mdbType= 'orderMDB' OR mdbType= 'registrationMDB'") 
+0

あなたの答えに感謝しますが、これは私にすべてのthそのタイプのeメッセージは同じインスタンスによって管理されますが、すべてのメッセージは同じMDBクラスのインスタンスによって管理されます。 – Wallkan

関連する問題