【问题标题】:How to use multiple producers and one consumer with activeMQ?如何通过activeMQ使用多个生产者和一个消费者?
【发布时间】:2019-05-01 08:48:32
【问题描述】:

所以我试图在我的 java 项目中使用 ActiveMQ(我以前从未使用过这样的东西,但我已经阅读过它是如何工作的)。

应用程序在 5 个不同的节点上运行,并在每个节点上创建应发送到同一队列的消息。

我认为它应该是这样工作的:我有一个创建这些消息的类;这些消息是在这些节点中的任何一个中创建的;所以这个类作为一个线程工作,应该是“生产者”,将每条消息发送到同一个队列。(因此我有多个生产者) 消费者类总是在同一个节点上运行。

这种方法对我有用吗?队列是线程安全的吗?

【问题讨论】:

  • 到目前为止你得到了什么?你有没有自己研究过这个话题并得到了一些开始的线索?

标签: java activemq message-queue producer-consumer


【解决方案1】:

是的,您的方法应该没有任何问题。所有消息代理都支持多个并发生产者将消息发送到同一个队列。应该没有线程安全问题。

【讨论】:

  • 根据我的阅读,我认为重复使用相同的连接而不是在每次生产者想要发送消息时打开/关闭是安全的。但是会话呢?我的应用程序在 5 个节点上运行,因此有 5 个不同的线程想要访问同一个队列。所以每个节点都应该有一个会话
  • 不仅可以在特定客户端上共享连接,而且强烈建议这样做。为发送的每条消息打开一个连接是一种反模式。会话也可以&应该被重复使用,但这并不重要。这里的一个关键是 JMS 会话不是线程安全的,因此不应由多个线程同时使用。客户端资源只能由同一 JVM 中的客户端共享,因此每个节点都需要拥有自己的一组资源。
猜你喜欢
  • 2020-06-17
  • 2012-01-10
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
相关资源
最近更新 更多