1

Active MQ がブローカーであり、JMS リスナーが接続されている 6 つのサーバーがあるとします。

トピックが送信されると、6 つのサーバーすべてがメッセージを消費します。

ここで、セレクターを使用して 6 つすべてではなく、特定のサーバーのみがメッセージを消費するようにし、JMS を送信する前にフィルター処理する必要があります。

トピックがすべてではなく特定のサーバーによって消費されるように、JMS でセレクターを定義する方法。

4

1 に答える 1

2

JMSメッセージ セレクターが必要です。送信前にフィルタリングする必要はありませんが、受信時にフィルタリングします。ID「serv_5」のサーバーのみがメッセージを受信する例:

プロデューサー:

...
Message message = session.createMessage();
message.setObjectProperty("server_id", "serv_5");
producer.send(message);

コンシューマー (MDB):

@MessageDriven(mappedName="jms/YourQueue", activationConfig =  {
        @ActivationConfigProperty(propertyName = "acknowledgeMode",
                                  propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType",
                                  propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(
                                  propertyName="messageSelector",
                                  propertyValue="server_id = 'serv_5'")

    })
public class YourMessageBean implements MessageListener { ..
于 2013-02-17T19:14:12.653 に答える