2

我是activemq的新手。我创建了一个队列并从一个客户端向该队列生成一条消息。我想从另一个客户端使用该消息。为了消费消息,代码如下

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("StaticQueueName");

     MessageConsumer consumer= session.createConsumer(destination);
     Message message = (Message) consumer.receive();
     System.out.println(message.getStringProperty("status"));
      if (message instanceof TextMessage) {
         TextMessage textMessage = (TextMessage) message;
         Text = textMessage.getText();
         System.out.println("Received: " + Text);
     } else {
         System.out.println("Received: " + message);
     }

如果我们已经知道队列名称,则无需 create.i 提及下面的代码。

 Destination destination = (Destination) session.createQueue("StaticQueueName");

如果我们之前知道队列名称,是否有任何可用的方法。所以使用该队列名称,我们可以访问 getqueue("queue name") 之类的消息,而不是创建队列。

4

2 回答 2

2

如果这样的队列已经存在,则不会创建其他队列,同样会提供给您。它不会被“覆盖”。

于 2013-10-31T13:35:08.630 回答
1
QueueReceiver receiver= session.createReceiver(queueName);
receiver.setMessageListener(this);

如果您知道queueName不仅仅是创建一个receiver,它将从队列中获取消息。

于 2013-10-31T13:52:15.637 回答