有没有办法使用单个同步调用接收多条消息?
当我知道队列中有 N 条消息(N 可能是小于 10 的小值)时,我应该能够执行类似 channel.basic_get(String queue, boolean autoAck, int numberofMsg ) 的操作。我不想向服务器发出多个请求。
最佳答案
RabbitMQ的basic.get
不幸的是不支持多条消息 as seen in the docs .检索多条消息的首选方法是使用 basic.consume这会将消息推送到客户端,避免多次往返。 acks
是异步的,因此您的客户端不会等待服务器响应。 basic.consume
还具有允许 RabbitMQ 在客户端断开连接时重新传递消息的好处,这是 basic.get
做不到。这也可以关闭设置 no-ack
至 true
.
设置 basic.qos
prefetch-count
将设置随时推送到客户端的消息数量。如果客户端没有等待消息(会立即返回),客户端库往往会因可选超时而阻塞。
关于Rabbitmq 使用单个同步调用检索多条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005515/