Logstash RabbitMQ输入插件-如何定义多个routing_key

时间:2019-05-29 14:09:48

标签: rabbitmq logstash

我正在使用Logstash的RabbitMQ插件从RabbitMQ中提取并使用以下管道推送到Elasticsearch:

input {
    rabbitmq {
        queue => "Elasticsearch_Queue"
        host => "rabbitmq"
        exchange => "my_event_bus"
        key => "SomeIntegrationEvent"
    }
}
output {
    elasticsearch {
        hosts => [ "elasticsearch:9200" ]
    }
    stdout { codec => rubydebug }
}

它工作正常,并创建了一个名为Elasticsearch_Queue的队列,并使用routing_key my_event_bus绑定到SomeIntegrationEvent交换。

我需要订阅多个事件,但是plugin docs上没有明确的解决方案。

2 个答案:

答案 0 :(得分:0)

由于key必须是字符串,因此您不能使用多个键将队列显式绑定到交换。

我建议将my_event_bus设为 fanout交换。这会将传递到此交换机的所有邮件路由到绑定队列。

然后定义第二个直接交换,您可以使用感兴趣的路由键(=事件)将其手动绑定到第一个交换多次。

答案 1 :(得分:0)

我们必须添加具有相同的/subscriptions/{0}/resourceGroups/my-snapshot/providers/Microsoft.Storage/storageAccounts/mysnapshots -f $sourceSnapshotSubscriptionId queue但不同的exchange的多个条目,如下所示:

key

我从弹性论坛中获得了the answer