微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多线程RabbitMQ消费者

如何解决多线程RabbitMQ消费者

我正在使用 Java 开发一个简单的工作微服务,它从 RMQ 使用(basicConsume)消息,处理它们并将它们插入到数据库中。 目前,该服务在整个流程中使用 1 个线程。

我的任务是重构它以在将数据插入数据库时​​使用多个线程。

这是我的设计理念:

![worker service flow

如您所见,我使用主线程来消费消息并将它们推送到队列中。 在流程结束时,我将数据库响应推送到另一个队列中,并从另一个线程确认每个响应。

根据我的调查,如果使用同一个 Channel 来消费和确认,这些操作是线程安全的。我无法理解如何改进与 RMQ 的通信,以及其他频道是否可以提供帮助。正如文档所说,消费一条消息的通道必须是确认它的通道。

我的问题是关于这个设计的想法:

  1. WDYT 关于消息队列的想法?
  2. 我是否应该使用另一个线程来使用这些消息并将它们推送到队列中?
  3. 如果 2. 的答案是肯定的,我应该为两个线程使用相同的 Channel 吗?
  4. 当我使用相同的 Channel 进行确认时,是否会影响消费效率?我的直觉是,当 Channel 用于确认时,Channel 不能用于消费。我说得对吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。