spring boot如何给指定消费者设置每次取消息的条数?

spring.rabbitmq.listener.simple.prefetch

这个相当于全局配置,所有消费者都会生效了,我想精确的控制指定的消费者。

阅读 2.7k
1 个回答

用@RabbitListene设置concurrency:

@Service
public class MyMessageListener {

    @RabbitListener(queues = "myQueue1", containerFactory = "prefetchFiveContainerFactory")
    public void consumer1(Message message) {
        // 消费者1的处理逻辑
    }

    @RabbitListener(queues = "myQueue2", containerFactory = "prefetchTenContainerFactory")
    public void consumer2(Message message) {
        // 消费者2的处理逻辑
    }
}

然后,在你的配置类里:

@Configuration
public class RabbitMqConfig {

    @Autowired
    private ConnectionFactory connectionFactory;

    @Bean("prefetchFiveContainerFactory")
    public SimpleRabbitListenerContainerFactory prefetchFiveContainerFactory() {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPrefetchCount(5);
        return factory;
    }

    @Bean("prefetchTenContainerFactory")
    public SimpleRabbitListenerContainerFactory prefetchTenContainerFactory() {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPrefetchCount(10);
        return factory;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题