java - 多线程 RabbitMQ 消费者
问题描述
我正在使用 Java 开发一个简单的工作者微服务,它正在使用来自 RMQ 的(basicConsume)消息,处理它们并将它们插入数据库。目前,该服务为整个流程使用 1 个线程。
我的任务是在将数据插入数据库时重构它以使用多个线程。
如您所见,我使用主线程来消费消息并将它们推送到队列中。在流程结束时,我将数据库响应推送到另一个队列中,并从另一个线程确认它们中的每一个。
经过我的调查,如果相同的 Channel 用于消费和确认,那么这些操作是线程安全的。我无法理解如何改善与 RMQ 的通信以及另一个渠道是否可以提供帮助。正如文档所说,消费消息的通道必须是确认消息的通道。
我的问题是关于这个设计的想法:
- WDYT 关于消息队列的想法?
- 我应该使用另一个线程来使用这些消息并将它们推送到队列中吗?
- 如果 2. 的答案是肯定的,我应该为两个线程使用相同的 Channel 吗?
- 当我使用相同的 Channel 进行确认时,它会影响消费的效率吗?我的直觉说,虽然 Channel 用于确认,但 Channel 不能用于消费。我对吗?
解决方案
推荐阅读
- python - 如何使用 Django 在表单操作中连接函数中的变量?
- php - 延迟加载图像加载太慢
- tensorflow - 为什么训练不使用 TensorFlow 文本教程中的完整训练数据集
- javascript - 可折叠手风琴组件中的Vue加载组件
- python - 什么是来自 ibapi.utils 的 @iswrapper 装饰器?
- c++ - OpenCL 内核是异步执行的吗?
- javascript - 在 javascript 中构造一个 JSON Payload
- c# - C# System.Data.SqlClient.SqlException:'关键字'table'附近的语法不正确。'
- excel - 查找单元格并从活动单元格中选择/复制到最后一行,包括空白
- oauth-2.0 - 启动 light-oauth2 图像时,它显示 service.yml 中没有可用的路由处理程序提供程序