如何在Activemq中创建没有创建队列的消息

时间:2013-10-31 13:25:45

标签: java jms activemq messaging

我是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);
     }

如果我们已经知道队列名称,则无需在代码下面创建。

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

如果我们之前知道队列名称,那么有没有可用的方法。因此,使用该队列名称,我们可以访问getqueue(“队列名称”)之类的消息,而不是创建队列。

2 个答案:

答案 0 :(得分:1)

如果此类队列已存在,则不会创建其他队列,同样会给您。它不会被“覆盖”。

答案 1 :(得分:0)

QueueReceiver receiver= session.createReceiver(queueName);
receiver.setMessageListener(this);

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