【问题标题】:How to push message from Activemq如何从 Activemq 推送消息
【发布时间】:2013-10-29 21:11:47
【问题描述】:

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

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

谁能帮帮我

谢谢

【问题讨论】:

  • 需要代码,更好地解释问题和用例等
  • @TimBish 我的问题是 activemq 能够将消息推送给任何消费者吗? .应该有一个消费者来消费消息。如果我错了,请纠正我。

标签: java jms activemq message-queue


【解决方案1】:

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

发送消息

消息生产者将消息发送到目的地;它的工作完成了。

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

接收消息

消息消费者可以通过以下两种方式之一接收消息:
同步,这里你显式调用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
    }
}

【讨论】:

  • 感谢您的回复。所以我的问题是 activemq 不能将消息推送给任何消费者权利。应该有一个消费者来消费来自activemq的消息。如果我错了,请纠正我。
  • 对于队列来说,不管有多少消费者,只有一个消费者会收到消息。对于主题,所有订阅者都会收到相同的消息。 ActiveMq 不选择消费者,因为从接收者的角度来看,JMS 基本上是一个 pull 系统;经纪人不推。
猜你喜欢
  • 2013-09-08
  • 2015-08-03
  • 2013-08-10
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 2013-11-17
相关资源
最近更新 更多