1

私はjmsとactivemqが初めてです。ActiveMQ の 1 つの静的キューに 1 つのメッセージを生成し、getJMSReplyTo を使用して一時キューに返信を取得します。コードは次のとおりです

ActiveMQConnectionFactory connectionFactory = new  ActiveMQConnectionFactory("tcp://localhost:61616");

    // Create a Connection
    Connection connection = connectionFactory.createConnection();
    connection.start();

    // Create a Session
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);


    // Create the destination (Topic or Queue)
    Destination destination = (Destination)   session.createQueue("PostWithParameter_Queue");

    // Create a MessageConsumer from the Session to the Topic or Queue
    MessageConsumer consumer = session.createConsumer(destination);
    //consumer.setMessageListener(new StaticQueueListener());
    // Wait for a message
    Message message = (Message) consumer.receive();
    MessageConsumer consumer1 = session.createConsumer(message.getJMSReplyTo());
    consumer1.setMessageListener(new ReplyHandler()); 
    consumer.close();
    session.close();

私の返信ハンドラは次のとおりです

@Override
public void onMessage(Message message) {

    try
    {

        System.out.println(message.getStringProperty("status"));
    }
    catch (JMSException e) 
    {
            e.printStackTrace();
    }
}  

今、一時キューから結果を取得しています。同じセッションだからです。私の質問は、一時キュー名を使用して異なるセッションの一時キューからメッセージを取得したいということです。一時キュー名を使用して別のクライアントの一時キューからメッセージを取得したい場合、どうすればよいですか? .

4

2 に答える 2

0

リスナーは、提供する任意の JMS セッションで動作できます。メッセージを配置したセッションと同じである必要はありません。

于 2013-10-31T13:42:08.680 に答える