use*_*587 5 rabbitmq spring-amqp
我们使用 Spring AMQP 从 RabbitMQ 读取消息,现在我们一次只能从队列中读取一条消息,我是否可以从队列中读取多条消息然后处理批处理?
我看到 Spring 中有一个 BatchingStrategy 可用,我如何将其插入到 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);
Run Code Online (Sandbox Code Playgroud)
...
public class Processor implements IChannelProcessor {
@Override
public void process(Message message) {
validateMessageEvent(message);
// process the message
Run Code Online (Sandbox Code Playgroud)
用于BatchingStrategy将多个消息段放入单个 amqp 消息中;容器会自动分批此类消息。它对你的目的没有帮助。
做你想做的事;您必须使用带有设置为 的@RabbitListener消息侦听器容器,而不是使用 POJO 消息传递 ( ) 。acknowledgeModeMANUALChannelAwareMessageListener
处理完一批消息后,调用basicAck通道以确认该批次中的所有消息。
| 归档时间: |
|
| 查看次数: |
3726 次 |
| 最近记录: |