1

JMS キューに関して質問があります。

私が利用できる唯一のキューであり、私が使用できる唯一のキューとして、共有キューを使用してjmsセンダー/レシーバーを実装しました。

私が今直面している問題は、この先着順であるため、プロデューサーから送信しているメッセージが、このキューを共有している他のユーザーではなく、私の消費者によって消費されることを保証できないことです。だから私は他のアプリのメッセージを消費していて、彼らは私のものを消費しています。

メッセージをリッスンしてキューから消費しない方法はありますか、それともトピックの実装ですか?

または、消費者だけが取得する識別子を明示的に設定することもできます。

私の主なコード:

public class AsyncReceiver implements MessageListener, ExceptionListener
{
public static void main(String[] args) throws Exception
{                                                                          
    //create queue factory
        factory = new TibjmsQueueConnectionFactory(serverUrl);
        //create queue connection
        queueConn = factory.createQueueConnection(userName, password);
        queueConn.setExceptionListener(this);
        //create queue session
        session = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

        //receive message by QueueReceiver
        final Queue queue = session.createQueue(queueName);
        final QueueReceiver queueReceiver = session.createReceiver(queue);
        queueReceiver.setMessageListener(this);
        queueConn.start  ();                                                                      
  }
4

2 に答える 2

1

JMS セレクターを使用する必要があります。すべての JMS メッセージには、送信者側で開始するプロパティを含めることができます。

メッセージ コンシューマーは、セレクター (消費するメッセージを説明する SQL に似たステートメント) を指定して、JMS 宛先 (キューまたはトピック) に登録できます。そのため、アプリケーション固有のプロパティを指定して、関連するメッセージのみを受け取ることができます。

于 2013-06-19T15:34:09.137 に答える