RabbitMQ basicPublish не вставляет сообщения в очередь - PullRequest
0 голосов
/ 04 мая 2018

Возможно, это какая-то глупая ошибка, которую я упускаю, но вот проблема:

Я пытаюсь вставить простое «привет» сообщение в очередь Кролика с предопределенным ключом обмена и маршрутизации. Это код, который я использую:

    private static void send_equity_task_to_rabbitmq(ConnectionFactory factory) throws IOException,TimeoutException{

        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare("b", false, false, false, null);
        channel.exchangeDeclare("b", "direct");

        channel.basicPublish("b","b",null, "hello".getBytes());

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

public static void main(String[] argv) throws TimeoutException,IOException {

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("127.0.0.1");

    Date start_time= Calendar.getInstance().getTime();
    Long start_time_timestamp=System.currentTimeMillis();

    System.out.println("[INFO] Starting connection to queue at:"+start_time);
        send_equity_task_to_rabbitmq(factory);

        Long end_time_timestamp=System.currentTimeMillis();

        System.out.println("[INFO] Message sent and processed successfully after:"+ (end_time_timestamp-start_time_timestamp)+" miliseconds");

 }
}

Код работает без ошибок. Однако, когда я проверяю количество записей в очереди "b", я получаю:

$ rabbitmqctl list_queues
Listing queues ...
b       0
...done.

В данный момент у меня нет потребителей для этой очереди, поэтому я предполагаю, что, поскольку в ней 0 записей, я плохо использую basicPublish. Что может быть не так?

Спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Я думаю, вам нужно привязать очередь к обмену. Вы создали очередь с именем «b» и обмен «b». Обмен будет распространять сообщения по связанным с ним очередям, используя "b" routingKey, но поскольку очередь "b" не привязана к обмену "b", обмен "b" не публикуется в этой очереди. .

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