我正在尝试从队列中读取一批消息的场景 例如,。队列中有100条消息,我想在一次调用中从队列中获取10条消息。
BatchingRabbitTemplate
提供了将消息作为批处理发送到RabbitMQ的功能。我们是否可以使用相同的方式批量读取队列中的消息而不使用BatchingRabbitTemplate
发布消息?
答案 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()
,这将为您返回单批邮件。
要逐个取消批处理和接收消息,您应该转到监听器容器。