繁体   English   中英

将RabbitMQ与Logstash一起使用时丢失消息

[英]Losing messages when using RabbitMQ with Logstash

我刚刚安装了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的行为吗? 我打算按顺序使用它,这样我就不会丢失消息,但是与没有它时相比,我丢失的甚至更多。

我在队列中看不到任何消息

解决此问题的可能步骤

如果由于事务失败或诸如死信交换之类的任何原因第一次未传递消息,则添加该功能以将消息重新推送到队列中。

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

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

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

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

启用 firehose跟踪器以检查队列中的消息。

查看 rabbitmq 可靠性指南。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM