Spring boot 弹簧靴&x2B;rabbitmq并行处理消息

Spring boot 弹簧靴&x2B;rabbitmq并行处理消息,spring-boot,rabbitmq,Spring Boot,Rabbitmq,我观察到队列中有多条消息,但我的工作人员正在一条接一条地拾取消息,而不是以视差方式处理消息。我做错了什么?我如何以视差方式处理多条消息,以最大限度地利用我的辅助处理。有什么最佳做法吗 我不确定并发值8在这里做什么 application.yml spring: rabbitmq: host: port: username: virtual-host: password: listener: simple:

我观察到队列中有多条消息,但我的工作人员正在一条接一条地拾取消息,而不是以视差方式处理消息。我做错了什么?我如何以视差方式处理多条消息,以最大限度地利用我的辅助处理。有什么最佳做法吗

我不确定并发值8在这里做什么

application.yml

spring:
  rabbitmq:
    host: 
    port: 
    username: 
    virtual-host: 
    password: 
    listener:
      simple:
        concurrency: 8
        prefetch: 8
Bean配置:

 @Bean
    Queue queue() {
        return new Queue("testQ", true);
    }

    @Bean
    TopicExchange exchange() {
        return new TopicExchange("testE");
    }

    @Bean
    Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind("testQ").to("testE").with("a.b.c");
    }

    @Bean
    SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
                                             MessageListenerAdapter listenerAdapter) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames("testQ");
        container.setMessageListener(listenerAdapter);
        return container;
    }

    @Bean
    MessageListenerAdapter listenerAdapter(Receiver receiver) {
        return new MessageListenerAdapter(receiver, "handleMessage");
    }


我认为,如果您自己在代码中创建SimpleMessageListenerContainer,那么您可以在代码中指定参数“concurrency”。例如:

@Bean
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
                                         MessageListenerAdapter listenerAdapter) {
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    container.setQueueNames("testQ");

    container.setConcurrency("8"); //set 'Concurrency' property for your container

    container.setMessageListener(listenerAdapter);
    return container;
}
参考: