我正在使用spring-boot创建批量视频处理系统。在这里,用户将通过xlsx表格提供所有与视频相关的信息,我们将在后端处理视频。我正在使用Rabbitmq来排队请求。假设用户上传了一个包含100行的工作表,那么Rabbitmq队列中将有100条消息。在后端,我们正在自动扩展订户(服务器)。因此,我们将仅从一个订户开始,根据负载(队列中的消息数),我们最多可以扩展到15个订户。但是我们的生产者非常快,它将所有消息分配给我们的第一个订户(在其他订户出现之前),而我们所有的新订户都没有从队列中获取任何消息。如果在生产者开始推送消息之前所有订户都可用,那么它将把消息分配给所有服务器。
请向我提供一个解决方案,说明我们的新订户如何从较早产生的队列中提取消息。
您可能会受到侦听器容器prefetchCount
属性的影响-它的默认版本为250(自2.0起)。
因此,第一个使用者启动时将收到多达250条消息。
听起来您应该将其减少到很小的数量,甚至一直减少到1,所以每个消费者仅收到一条消息。