rabbitmq - 为什么 spring-amqp 消费者性能很慢?

标签 rabbitmq spring-amqp

我同时启动了生产者和消费者。 6 小时后,生产者将大约 6 千万条消息放入队列并在 6 小时后停止生产者,但消费者仍在连续运行,即使在运行 18 小时后仍有 4 千万条消息在队列中。谁能告诉我为什么消费者性能非常慢?

提前致谢!

@Bean
    public SimpleMessageListenerContainer listenerContainer() {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory());
        container.setQueueNames(this.queueName);
        container.setMessageListener(new MessageListenerAdapter(new TestMessageHandler(), new JsonMessageConverter()));
        return container;
    }
@Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
                "localhost");
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        return connectionFactory;
    }

    @Bean
    public RabbitTemplate rabbitTemplate() {
        RabbitTemplate template = new RabbitTemplate(connectionFactory());
        template.setMessageConverter(new JsonMessageConverter());
        template.setRoutingKey(this.queueName);
        template.setQueue(this.queueName);
        return template;
    }

    public class TestMessageHandler  {
           // receive messages
        public void handleMessage(MessageBeanTest msgBean) {
                   //  Storing bean data into CSV file
             }
    }

最佳答案

根据 Gary 的建议,您可以按如下方式设置它们。查看@RabbitListener

@Bean
public SimpleRabbitListenerContainerFactory listenerContainer(     {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setConnectionFactory(baseConfig.connectionFactory());
    factory.setConcurrentConsumers(7); // choose a value
    factory.setPrefetchCount(1); // how many messages per consumer at a time
    factory.setMaxConcurrentConsumers(10); // choose a value
    factory.setDefaultRequeueRejected(false); // if you want to deadletter
    return factory;
}

关于rabbitmq - 为什么 spring-amqp 消费者性能很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18732134/

相关文章:

postgresql - 消息不进入队列

python - 使用 aioamqp 的异步 RabbitMQ 消费者

java - 如何在没有确认的情况下消费 100 条消息,然后工作然后确认它们?

java - 如何优雅地停止使用 @RabbitListener 消费消息

spring-boot - RabbitMQ Spring Boot AMQP - 使用并发线程

java - RabbitMQ(或者spring cloud stream)可以独占消费消息吗?

c# - 如何为 RabbitMQ 管理 HTTP API 生成 password_hash

docker - aws ecs中docker容器之间通过rabbitmq进行通信

java - 如何修复后续请求中的错误 "Only one ConfirmCallback is supported by each RabbitTemplate"

java - AggregatingMessageHandler 的手动 ACK