Spring AMQP пакетного получения сообщений

Мы используем Spring AMQP для чтения сообщений из RabbitMQ, сейчас мы читаем только одно сообщение за раз из очереди. Могу ли я прочитать несколько сообщений из очереди, а затем обработать пакет?

Я вижу, что есть BatchingStrategy, доступный в Spring, как я могу подключить его в connectionFactory?

вот мой код:

CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host, port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);

SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        JsonMessageConverter converter = new JsonMessageConverter();
        DefaultClassMapper defaultClassMapper = new DefaultClassMapper();
        defaultClassMapper.setDefaultType(Message.class);
        converter.setClassMapper(defaultClassMapper);
        factory.setMessageConverter(converter);
        factory.setConcurrentConsumers(3);

...

public class Processor implements IChannelProcessor {
@Override
    public void process(Message message) {
        validateMessageEvent(message);
        // process the message

1 ответ

BatchingStrategy для помещения нескольких сегментов сообщения в одно сообщение amqp; контейнер автоматически отправляет такие сообщения. Это не поможет в ваших целях.

Делать что хочешь; вместо использования сообщений POJO (@RabbitListener) вы должны использовать контейнер слушателя сообщений с acknowledgeMode установлен в MANUAL с ChannelAwareMessageListener,

Когда вы обработали свою партию сообщений, позвоните basicAck на канале для подтверждения всех сообщений в пакете.

Другие вопросы по тегам