【发布时间】:2023-07-30 17:00:01
【问题描述】:
当使用 RabbitMQ 作为消息代理时,我有一个场景,多个并发消费者使用 basic.get AMQP 方法从队列中提取消息,并使用显式确认从队列中删除消息。假设以下设置
Q 有消息 M1、M2、M3 和消费者 C1、C2 和 C3(每个都有自己的连接和通道)连接到它。
在 basic.get 方法中如何处理并发?对 basic.get 方法的调用是否同步以处理每个使用自己的连接和通道的并发消费者? C1、C2 和 C3 发出 basic.get 调用同时接收消息(假设服务器同时接收所有 3 个请求)。
C1 使用 basic.get 请求消息并获取 M1。当C2请求消息时,由于它使用不同的连接,它是否再次获得M1?
消费者如何按预定义大小批量提取消息?
【问题讨论】:
-
不清楚你的问题是什么。
-
第二点是NO。其他的看不懂! “同步处理并发消费者”是什么意思! RMQ 是一个 FIFO 系统,因此您放置 3 条消息,C1 获得第一个,C2 获得第二个......等等......假设您使用的是 prefetch = 1。
-
下面我的回答有帮助吗?如果有,请将其标记为答案。如果没有,我该如何详细说明?
标签: rabbitmq message-queue amqp