【问题标题】:Pushing messages to new subscribers向新订阅者推送消息
【发布时间】:2020-01-25 00:30:49
【问题描述】:

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

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

【问题讨论】:

    标签: rabbitmq spring-rabbit


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢加里。
    猜你喜欢
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2019-12-16
    • 2017-01-28
    • 2020-11-23
    相关资源
    最近更新 更多