首页 > 解决方案 > 向新订阅者推送消息

问题描述

我正在使用 spring-boot 创建一个批量视频处理系统。在这里,用户将通过 xlsx 表提供所有视频相关信息,我们将在后端处理视频。我正在使用 Rabbitmq 对请求进行排队。假设用户上传了一张有 100 行的表格,那么 Rabbitmq 队列中将有 100 条消息。在后端,我们正在自动扩展订阅者(服务器)。因此,我们将从仅一个订阅者开始,根据负载(队列中的消息数量),我们将扩展到 15 个订阅者。但是我们的生产者非常快,它将所有消息分配给我们的第一个订阅者(在其他订阅者出现之前),并且我们所有的新订阅者都没有从队列中获取任何消息。

请为我提供一个解决方案,说明我们的新订阅者如何从之前生成的队列中提取消息。

标签: rabbitmqspring-rabbit

解决方案


您可能受到监听器容器prefetchCount属性的影响 - 它默认为 250,最新版本(自 2.0 起)。

所以第一个消费者在启动时最多会收到 250 条消息。

听起来您应该将其减少到一个很小的数字,甚至一直减少到 1,因此每个消费者只有一条消息未处理。


推荐阅读