我是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(“队列名称”)之类的消息,而不是创建队列。
答案 0 :(得分:1)
如果此类队列已存在,则不会创建其他队列,同样会给您。它不会被“覆盖”。
答案 1 :(得分:0)
QueueReceiver receiver= session.createReceiver(queueName);
receiver.setMessageListener(this);
如果您知道queueName
而不仅仅是创建receiver
,那么它将从队列中获取消息。