Spring AMQP中的预取与批处理

问题描述

从低层次看,预取计数和批处理大小(批处理)有什么区别?或者它们之间有什么关系?

要以不同的方式进行构架,一个值会影响另一个吗?

还有,除了批处理之外,还有没有办法在侦听器中获取所有“预取”消息?

解决方法

Prefetch只是经纪人允许消费者处理的未确认消息的数量。

使用SimpleMessageListenerContainer,将预提取的消息保存在队列中,并且一次一次传递给侦听器(默认情况下)。

从2.2版开始,可以将容器配置为将消息的“批”传递给侦听器,它结合使用batchSize和receiveTimeout来组合批处理。

这与预取完全无关。

但是,批处理大小应小于或等于预取,因为否则,将永远无法达到批处理大小,并且批处理总是很短,并由`receiveTimeout'触发。