RabbitMQ STOMP是否有任何方法可以停止使用消息,直到上一次确认之前?

RabbitMQ STOMP是否有任何方法可以停止使用消息,直到上一次确认之前?,rabbitmq,stomp,Rabbitmq,Stomp,我在我的项目中使用RabbitMQ Web STOMP,这对我来说非常好,但有一个问题。当消费者订阅队列时,它会立即从队列中获取所有消息。在我的例子中,一个消息任务可能需要很多时间,而且只有在上一个任务完成后,消费者才有必要从队列中获取下一个消息 当发布在消费者订阅之后开始时,一切正常,但当队列中已经有消息时,第一个订阅的消费者将获得所有消息,其他人将保持免费。是否有类似node amqp queue.shift()的方法,仅在确认上一条消息时使用下一条消息?(您使用的是哪个客户端?) 您的问题

我在我的项目中使用RabbitMQ Web STOMP,这对我来说非常好,但有一个问题。当消费者订阅队列时,它会立即从队列中获取所有消息。在我的例子中,一个消息任务可能需要很多时间,而且只有在上一个任务完成后,消费者才有必要从队列中获取下一个消息

当发布在消费者订阅之后开始时,一切正常,但当队列中已经有消息时,第一个订阅的消费者将获得所有消息,其他人将保持免费。是否有类似node amqp queue.shift()的方法,仅在确认上一条消息时使用下一条消息?

(您使用的是哪个客户端?)

您的问题的答案是
basic\u qos
,请参阅并搜索
basic.qos

在c#API中,您将执行以下操作:

int prefetch = 10;

IModel channel = connection.CreateModel(); //where connection is IConnection
channel.basic_qos(0, prefetch, false);
预回迁大小可用于告诉rabbitmq服务器在确认之前要向使用者发送多少条消息。如果设置了NO-ACK选项,则忽略预回迁大小


请记住,设置此值可能会对性能产生潜在影响,请看。

我将RabbitMQ Web STOMP与浏览器JS结合使用。我已经知道如何使用C#甚至node.js来处理这个问题,但是STOMP是否有QoS?为SUBSCRIBE设置prefetch:1 CONNECT header和ack:client header对我不起作用……我的眼睛在哪里!当然,“预回迁计数”:订阅的1个标题就是答案,谢谢!