0

我刚刚安装了 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 管理来查看队列的演变。当我发送 10,000 条消息时,我只收到不到一半。我应该更改任何参数以改善rabbitMQ的行为吗?我打算按顺序使用它,这样我就不会丢失消息,但我失去的比没有它时还要多。

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

4

1 回答 1

2

解决此问题的可能步骤

如果由于事务失败或任何事情(如死信交换)而第一次未交付,则添加将消息重新推送到队列的功能。

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

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

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

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

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

查看 rabbitmq可靠性指南

于 2015-12-11T05:58:26.547 回答