RabbitMQ正在丢失消息

时间:2015-12-02 13:56:08

标签: logging rabbitmq logstash logstash-configuration rabbitmq-exchange

我刚刚安装了RabbitMQ,我正在使用logstash。 我一直在发送消息,但是我丢失了很多数据。我不知道怎么能解决它。我正在使用rabbitMQ中的默认配置。

这些是logstash中的输出和logstash中的输入:

output {
 rabbitmq {
     host => "IPHOST"
     exchange => "logstash-rabbitmq"
     exchange_type => "direct"
     key => "logstash-key"
     workers =>4
     durable => true
     persistent => true
}
}




input
 {

rabbitmq {
    host => "IPHOST"
    queue => "logstash-queue"
    durable => true
    key => "logstash-key"
    threads => 8
    prefetch_count => 100
    port => 5672
    user => "test"
    password => "test"
     ack => false
     exchange => "logstash-rabbitmq"
}

}

我正在使用RabbitMQ Management来查看队列的演变。 当我发送10,000条消息时,我只收到不到一半的消息。 是否有任何参数我应该改变以改善rabbitMQ的行为?我打算按顺序使用它,这样我就不会丢失信息,但是当我没有丢失信息时,我的损失甚至更多。

I can't see any message in the queue

1 个答案:

答案 0 :(得分:1)

解决此问题的可能步骤

如果由于交易失败或任何事情(如死信交换)未首次交付,请添加此功能以将消息重新推送到队列中。

确保消息是持久的。确认是真的,队列是持久的。如果服务器出现故障,则不应有数据丢失。

确保在发布之前创建队列。

您应该使用MessageProperties来使消息持久化。

channel.basicPublish("", "task_queue", 
        MessageProperties.PERSISTENT_TEXT_PLAIN,
        message.getBytes());

Enable firehose跟踪器检查队列中的消息。

Checkout rabbitmq reliability指南。