RabbitMQ - Как получить сообщения с определенными ключами маршрутизации? - PullRequest
1 голос
/ 20 июня 2019

Сообщения могут быть отправлены в очередь с несколькими различными ключами маршрутизации, но я хочу получить только те сообщения, которые имеют «MyRouting.Route.RtKey1» или «MyRouting.Route.RtKey2».У меня есть следующий код в качестве потребительского кода, но он не получает никаких сообщений, независимо от ключа маршрутизации, который отображается в консоли управления.Как я могу получить только те сообщения, которые хочу?

String myMessage;
String routingKeyReceived;

private void getMessage() {
    String FROM_QUEUE_NAME = "FromQueue";
    String EXCHANGE_NAME = "amq.topic";
    myMessage = "";
    routingKeyReceived = "";

    ConnectionFactory factory = new ConnectionFactory();
    factory.setUsername("test");
    factory.setPassword("test");
    factory.setVirtualHost("MyVirtualHost");
    factory.setHost("172...");
    factory.setPort(5672);

    try 
    {
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.exchangeDeclare(EXCHANGE_NAME, "topic", true);

        channel.queueDeclare(FROM_QUEUE_NAME, true, false, false, null);

        channel.queueBind(FROM_QUEUE_NAME, EXCHANGE_NAME, "MyRouting.Route.RtKey1");
        channel.queueBind(FROM_QUEUE_NAME, EXCHANGE_NAME, "MyRouting.Route.RtKey2");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            myMessage = new String(delivery.getBody(), "UTF-8");
            routingKeyReceived = delivery.getEnvelope().getRoutingKey();
        };
        channel.basicConsume(FROM_QUEUE_NAME, true, deliverCallback, consumerTag -> { });

        channel.close();
        connection.close();

    } catch (Exception e) {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...