【问题标题】:How to get the message from temporary Queue in Different session如何从不同会话中的临时队列中获取消息
【发布时间】:2013-11-11 09:26:54
【问题描述】:

我是 jms 和 activemq 的新手。我向 activemq 中的一个静态队列生成一条消息,并使用 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();
    }
}  

现在我正在从临时队列中获取结果。因为它在同一个会话中。 我的问题是我想使用临时队列名称从不同会话中的临时队列中获取消息。如果我想使用临时队列名称从不同客户端的临时队列中获取消息,我将如何做到这一点? .

【问题讨论】:

  • 您的侦听器可以使用您提供的任何 JMS 会话,它不必与您放置消息的会话相同。

标签: java jms activemq messaging


【解决方案1】:

通常,您会设置回复 jms 标头,然后无论您在何处使用该消息(例如,肯定是在不同的会话中..),您都可以拉出作为临时目标的 JMSReplyTo 标头并回复那个。

您应该查看 ActiveMQ wiki:

http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html

【讨论】:

  • 感谢您的回复。在该链接中,他们所做的是,在客户端,他们创建了一个 messagelistner 并在同一个线程或会话中生成消息到 ativemq。我想要的是不同线程中的messagelistner(使用消息)并使用消息。如何做到这一点..?等待你的回复..
【解决方案2】:

您的侦听器可以使用您提供的任何 JMS 会话,它不必与您放置消息的会话相同。

【讨论】:

  • 我同意你的看法。但是当我尝试使用带有 tempQueue 名称的消息时,它会创建一个具有该名称的队列。它不会使用该消息。
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
相关资源
最近更新 更多