【问题标题】:How to push messages from Activemq to consumer如何将消息从 Activemq 推送到消费者
【发布时间】:2013-09-08 22:52:39
【问题描述】:

我是ActivemqJava的新手,看了教程,有点懂了。谁能帮我解决以下任务。

假设我们在 Activemq 的 Queue/Topic 中有 10 条消息。我们正在从数据库中获取消息,我们已经做到了。

我想编写 2 个 Java 应用程序(使用 JMS 接收来自 activemq 的消息),它们将充当 Activemq 中的消费者。我想要实现的是,每当Activemq 从数据库获取消息时,activemq 应该检查是否有任何消费者是免费的。如果任何消费者是免费的,activemq 应该将消息推送给消费者,一旦消费者收到它就会自己做处理。

那么我的 java 代码应该如何实现呢?

还有如何设置预取限制?

谁能帮帮我。

谢谢。

【问题讨论】:

  • Activemq 是如何从数据库中获取消息的?
  • @anubhava 在 Database 和 Activemq 之间,我们编写了用于发送消息的 Java Application。

标签: java jms activemq message-queue producer-consumer


【解决方案1】:

很高兴知道在 AMQ 代理和数据库之间有一个生产者,它不断地将消息推送到 AMQ。

回答你的问题。可以有多个消费者在任何目的地(队列/主题)上监听。 ActiveMQ 代理将消息推送给任何消费者(可以自定义分发)。正如我在上一个问题中回答的那样,AMQ 将使用prefetch limit(假设是 N)在开始等待获取ack 之前发送这么多消息。如果一个消费者很忙,那么它的本地缓冲区中只能有 N 条消息在等待,AMQ 代理会自动选择另一个消费者来推送消息。

【讨论】:

  • 你是说,Activemq 能够向任何消费者推送消息,为此我需要编写消费者代码。为此,我在 Google 中搜索,我发现 3 或 4 个示例都在解释消费者从 activemq 获取消息。但我想从 Activemq 向消费者推送消息。如果你知道你能帮我写消费者代码吗。
  • 您不需要为消息分发编写特殊代码。只需将消费者代码编写为标准消费者。示例代码见:github.com/egalli64/bitingcode/blob/master/amq/Hello.java
  • 好的@anubhava。假设在我的 Activemq 中我们有 2 个队列名称是 A,B。一个有 2 个消费者的名字是 1,2。同样B有2个消费者名字是3,4。知道我的疑问是,如果 activemq 从 DB 获取消息到 A.Activemq 如何知道 A 是否有 1,2。为此,我需要配置一些 Activemq 配置文件。
  • ActiveMQ 非常清楚 queueA 的消费者 1 和消费者 2 有 2 个在线消费者。当消费者应用程序启动时,它会与 AMQ 代理建立持久连接,并告诉 AMQ 它正在侦听哪个队列。这是 AMQ 代理可以将消息从该队列传递给所有活动消费者的唯一方式。
  • 这里我的消费者将是一个 java 应用程序。在创建消费者函数时(在上面发布的 github 代码中)我将如何将我的 java 应用程序链接到消费者?会通过名称/路径/网址吗?
猜你喜欢
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2015-11-25
  • 2020-06-13
  • 2020-12-09
  • 2013-08-01
相关资源
最近更新 更多