Я использую плагин 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 и связывается с my_event_bus обменом с помощью routing_key SomeIntegrationEvent.

Мне нужно подписаться на несколько событий , но на документы плагинов.

0
Ahmad Ahmadi 29 Май 2019 в 17:09

2 ответа

Лучший ответ

Мы должны добавить несколько записей с одинаковыми queue и exchange, но разными key, как показано ниже:

input {
    rabbitmq {
        queue => "Elasticsearch_Queue"
        host => "rabbitmq"
        exchange => "my_event_bus"
        key => "SomeIntegrationEvent1"
    }
    rabbitmq {
        queue => "Elasticsearch_Queue"
        host => "rabbitmq"
        exchange => "my_event_bus"
        key => "SomeIntegrationEvent2" 
    }
}

Я получил ответ с эластичных форумов.

0
Ahmad Ahmadi 6 Авг 2019 в 07:12

Поскольку {{ X0}} должна быть строкой, вы не можете явно привязать очередь к обмену, используя несколько ключей.

Я предлагаю сделать my_event_bus обмен фанатами . Это направит каждое сообщение, доставленное в этот обмен, в связанную очередь.

Затем определите второй прямой обмен , который вы вручную связываете с первым обменом несколько раз, используя интересующие вас ключи маршрутизации (= события).

0
user11044402user11044402 29 Май 2019 в 18:19