当前位置: 首页 > 知识库问答 >
问题:

如何在ActiveMQ中的多个线程中共享同一个生产者和消费者?

郤令
2023-03-14

下面我用一篇关于临时排队的文章来解释我的想法,我只想知道我对还是错。

参考链接:如何使用JMS实现请求响应

“创建临时目的地、消费者、生产者和连接都是与代理同步的请求-响应操作,因此在处理每个请求时应避免,因为它会导致与JMS代理进行大量聊天。”

我不明白这句话在咒骂什么?在不同的线程中我们可以访问临时队列吗?一点道理都没有?有人能解释一下吗

共有1个答案

王彭薄
2023-03-14

为了向队列发送消息,我们需要生产者。并读出我们需要消费者的信息。

让我们继续为每个线程(不是java线程,而是请求-响应序列)设置一个单独的临时JMSqueue。这意味着要为队列生成一个生产者对象。因此,该语句意味着您只创建了一个生产者对象和消费者对象。这意味着对于每个通信线程,您都将有多个生产者和消费者以及JMSQEUEUS。

更改逻辑,并为每个通信线程分配唯一的密钥。您设置了一个JMSQueue,它在启动时加载。Producer对象将始终向JMSqueue打开连接会话。我们只需调用相同生产者对象的方法,并将消息推送到队列中。每个消息都有一个相关/唯一的id来引用通信线程

 类似资料:
  • 我有一个使用ActiveMQ的消息队列。web请求用persistency=true将消息放入队列。现在,我有两个消费者,它们都作为单独的会话连接到这个队列。使用者1总是确认消息,但使用者2从不这样做。 JMS队列实现负载平衡器语义。一条消息将被一个使用者接收。如果在发送消息时没有可用的使用者,它将被保留,直到有可以处理消息的使用者可用为止。如果使用者接收到一条消息,但在关闭之前没有确认它,那么该

  • 我有三根线。线程1(T1)是生成器,它生成数据。线程2和线程3(T2和T3)分别等待T1的数据在单独的循环中处理。我正在考虑在线程之间共享BlockingQueue,并通过调用“Take”让T2和T3等待。

  • 我有一个生产者/消费者场景,我不希望一个生产者交付产品,多个消费者消费这些产品。然而,常见的情况是,交付的产品只被一个消费者消费,而其他消费者从未看到过这个特定的产品。我不想实现的是,一个产品被每个消费者消费一次,而没有任何形式的阻碍。 我的第一个想法是使用多个BlockingQueue,每个消费者使用一个,并使生产者将每个产品按顺序放入所有可用的BlockingQueues中。但是,如果其中一个

  • 我有两个线程的问题,似乎没有正确同步。我基本上有一个布尔值名为“已占用”。当没有线程启动时,它被设置为false。但是当一个线程启动时,线程集被占用是真的,我有一个类,它有线程(run),它们调用下面的函数。 这是一个模拟银行的示例,它接收一个金额(初始余额),然后随机执行取款和存款。我的教授提到了一些关于从取款线程到存款线程的信号?这是怎么回事?在提取线程中,它应该运行到余额为2低,并等待存款线

  • 我正在尝试了解RxJava并发的一些细节,但我不确定我的想法是否正确。我对SubscribeOn/观察的工作原理有很好的了解,但我正在尝试确定池调度程序的一些细节。为此,我正在考虑尽可能简单地实现一个1-N生产者-消费者链,其中消费者的数量与CPU一样多。 根据文档,Schedulers.computation()由与内核一样多的线程池支持。但是,根据Reactive合约,运算符只能获得顺序调用。

  • 我最近开始使用消息队列(使用ActiveMQ),并进行了试验。 null 谢谢你的建议,