我们如何使用BatchingRabbitTemplate从RabbitMQ队列中批量读取消息?

时间:2016-11-29 08:53:33

标签: spring spring-boot rabbitmq

我正在尝试从队列中读取一批消息的场景 例如,。队列中有100条消息,我想在一次调用中从队列中获取10条消息。

BatchingRabbitTemplate提供了将消息作为批处理发送到RabbitMQ的功能。我们是否可以使用相同的方式批量读取队列中的消息而不使用BatchingRabbitTemplate发布消息?

1 个答案:

答案 0 :(得分:2)

监听器容器自动“解批”这些消息。请参阅Reference Manual

如果您只需将它们作为单批邮件接收,则应通过以下方式关闭容器上的选项:

/**
 * Determine whether or not the container should de-batch batched
 * messages (true) or call the listener with the batch (false). Default: true.
 * @param deBatchingEnabled the deBatchingEnabled to set.
 */
public void setDeBatchingEnabled(boolean deBatchingEnabled)

但是,呃,您可以使用标准的RabbitTemplate.receive(),这将为您返回单批邮件。

要逐个取消批处理和接收消息,您应该转到监听器容器。