В DirectMessageListenerContainer некоторая логика перемещена в реализацию AMQP, в отличие от ListenerContainer, как и SimpleMessageListenerContainer
Это то, что Javadocs в SimpleMessageListenerContainer говорят для setTxSize () -
/**
* Tells the container how many messages to process in a single transaction (if the channel is transactional). For
* best results it should be less than or equal to {@link #setPrefetchCount(int) the prefetch count}. Also affects
* how often acks are sent when using {@link AcknowledgeMode#AUTO} - one ack per txSize. Default is 1.
* @param txSize the transaction size
*/
1005* Клиент отправляет подтверждение каждый раз, когда обрабатывается количество сообщений txSize.Это контролируется в методе
private boolean doReceiveAndExecute(BlockingQueueConsumer consumer) throws Throwable { //NOSONAR
Channel channel = consumer.getChannel();
for (int i = 0; i < this.txSize; i++) {
logger.trace("Waiting for message from consumer.");
Message message = consumer.nextMessage(this.receiveTimeout);
.
.
. В более новых реализациях каждое сообщение напрямую проверяется в потоке и основывается на транзакционной модели (один или издатель подтверждает ), которую потребитель отправляет подтвержденияКролику MQ