我已经开始同时生产者和消费者。 6小时后,制作人制作了大约6亿分钟的信息,并在6小时后停止了制作人,但消费者仍在持续运行,即使在运行18小时后仍然有4千万信息在排队。请问任何人,请让我知道为什么消费者表现非常缓慢?为什么spring-amqp的消费者表现很慢?
在此先感谢!
@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
}
}
谢谢罗素的回复。消费者花费32个小时消费1亿条消息。在消费者,我没有做任何仅仅消费生产消息的事务,而是将这个配置添加到这个帖子中。谢谢 – Pand005
你的信息有多大?我在<30秒内发布了100,000条短消息,并且都在100秒内消耗完毕 - 这包括在消费者端记录每条消息!而且,它在一台小型笔记本电脑上。你有没有基准你的TestMessageHandler?图片中没有RabbitMQ,每秒可以处理多少条消息? –
每个消息的大小是46个字节。当我处理100,000条消息时,我确实同意,如上所述,它花费的时间更少。在这里,RabbitMQ服务器运行在局域网内部大小为30GB的一台服务器上,运行内存为3.4GB的桌面上的生产者和消费者的Java客户端。消费者将接收到的消息插入CSV文件而不是其他操作的逻辑。我不明白,“你测试了你的TestMessageHandler吗?”可以告诉我吗? – Pand005