gpt4 book ai didi

rabbitmq - Spring amqp批量接收消息

转载 作者:行者123 更新时间:2023-12-02 19:14:12 25 4
gpt4 key购买 nike

我们使用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);

...

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

最佳答案

BatchingStrategy用于将多个消息段放入单个 amqp 消息中;容器会自动分批此类消息。它对您的目的没有帮助。

做你想做的事;您必须使用带有 @RabbitListener 的消息监听器容器,而不是使用 POJO 消息传递 ( acknowledgeMode )设置为MANUALChannelAwareMessageListener .

处理完一批消息后,请调用 basicAck在 channel 上确认批处理中的所有消息。

关于rabbitmq - Spring amqp批量接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com