如何从Activemq推送消息

时间:2013-10-25 11:02:16

标签: java jms activemq message-queue

我是activemq的新手。我读了一些文章并做了这个。请帮助我解决以下任务。 我从我的java应用程序向activemq生成一条消息,我在另一个java应用程序中有该消息的消费者。所以我将从activemq获取消息。每次这个消费者(听众)在activemq中寻找消息。我的问题是activemq可以将消息推送到消费者(听众)。

activemq仅用于存储消息?它会进行任何推拉操作吗? activemq总是需要生产者(产生消息)和消费者(消费消息)?

任何人都可以帮助我

感谢

1 个答案:

答案 0 :(得分:13)

ActiveMq,WebLogic,IBM MQ和任何JMS兼容的提供程序都是基于目标的消息传递系统;目的地或主题是排队主题。发送消息时,生产者可以发送消息并立即断开连接; ActiveMq将消息存储在队列中。接收时,消息使用者可以独立于发送者接收同步或异步。

enter image description here

发送消息

消息生产者向目的地发送消息;它的工作已经完成。

QueueSender queueSender = queueSession.createSender(myQueue);
queueSender.send(message);

接收消息

消息使用者可以通过以下两种方式之一接收消息:
Synchrounous ,在这里您明确地致电receive()

QueueReceiver queueReceiver = queueSession.createReceiver(myQueue);
queueConnection.start();
Message m = queueReceiver.receive();

异步,在这里实现MessageListener接口的回调方法:

class MyQueueReceiver implements javax.jms.MessageListener {

    QueueReceiver queueReceiver = queueSession.createReceiver(myQueue);
    queueReceiver.setMessageListener(this);
    ...
    public void onMessage(Message msg){
      //consume message here
    }
}