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

在多线程中使用RabbitMQ publisher

鲜于璞瑜
2023-03-14

我想创建一个可以从不同线程调用的RabbitMQ发布服务器。
基于RabbitMQ最佳实践,我不应该允许在不同线程中使用同一通道,因此在发布服务器的多个实例中共享此通道将会导致问题。
我能想到的唯一解决方案是拥有一个具有内部队列的管理器线程,该队列实现一个内部生产者-消费者,而单个消费者仅存在于该线程中。
有没有更简单的方法?由于显而易见的原因,希望尽可能避免同步,但此解决方案不允许这样做。

共有1个答案

燕禄
2023-03-14

你建议的解决办法是可以的。您还可以看看Spring AMQP。它提供了一个线程安全的rabbittemplate,它在背后使用通道池。

 类似资料:
  • 问题内容: 我有一个多线程Java应用程序,该应用程序会将有关它收到的消息的信息输出到控制台以进行调试。每次应用程序收到消息时,它将在消息上调用。 我遇到的问题是,如果应用程序被消息淹没,则会打印错误信息(例如旧缓冲区信息)。这使我想知道是否存在线程问题,即多个线程一次调用该函数,而没有正确刷新缓冲区。 在我的主程序(线程)中,我有以下效果: 在我的线程中,我有以下效果: 是否有一种简单的方法可以

  • 问题内容: 有人可以帮助我了解什么是Java 以及何时使用它吗? 对于该程序的工作方式,我没有一个很清楚的想法。据我了解,所有三个线程同时启动,每个线程将在3000ms之后调用CountDownLatch。因此,递减计数将逐一递减。锁存器变为零后,程序将打印“ Completed”。也许我的理解方式不正确。 // ------------------------------------------

  • 我在我的Spring boot应用程序中使用OAuth2RestTemplate,并通过它使用一些资源,因为它封装了所有身份验证信息,所以我可以只发送请求,而不用担心令牌和其他身份验证内容。 在我并行发送请求之前,一切都很好。 由于OAuth2RestTemplate有一个作用域(它是本地的,因为它包含用户的会话相关信息),当我试图在多线程环境中使用它时,我得到以下异常 组织。springfram

  • 问题内容: 我正在尝试将Hibernate用于多线程应用程序,其中每个线程都检索一个对象并将其插入表中。我的代码如下所示。我每个线程都有本地hibernate会话对象,在每个InsertData中,我都执行beginTransaction和commit。 我面临的问题是很多次我收到“ org.hibernate.TransactionException:不支持嵌套事务” 由于我是hibernate

  • 问题内容: 是否有一种实际的方法可以在PHP中实现多线程模型,无论是真正的还是仅对其进行仿真。一段时间以前,建议您可以强制操作系统加载PHP可执行文件的另一个实例并处理其他同时进行的进程。 这样做的问题是,当PHP代码完成执行PHP实例后,它仍保留在内存中,因为无法从PHP中杀死它。因此,如果您正在模拟多个线程,则可以想象会发生什么。因此,我仍在寻找一种可以在PHP中有效完成或模拟多线程的方法。有

  • 问题内容: 我们公司有一个每天运行的批处理应用程序,它主要执行一些与数据库相关的工作,例如,从文件将数据导入数据库表。 该应用程序中定义了20多个任务,每个任务可能取决于其他任务。应用程序一个接一个地执行任务,整个应用程序在单个线程中运行。 完成所有任务需要3到7个小时。我认为它太长了,所以我想也许我可以通过多线程来提高性能。 我认为,由于任务之间存在依赖性,因此使任务并行运行不是很好(或者很不容