PinkRabbitMQ
PinkRabbitMQ copied to clipboard
Не удается организовать чтение сообщений
Версия компоненты 1.8.
Пример выполняемого кода.
Потребитель = Клиент.BasicConsume(Параметры.Очередь, "", Истина, Ложь, 0);
// После этого вызова Потребитель = ""
// Второй параметр не влияет на дальнейший результат.
Пока Клиент.BasicConsumeMessage(Потребитель, ОтветноеСообщение, ТегСообщения, 1) Цикл
// В цикл не заходит.
ОтветноеСообщение = ""; // Обнуляем, чтобы избежать утечку памяти
ТегСообщения = 0; // Обнуляем, чтобы избежать утечку памяти
КонецЦикла;
Не является ошибкой. Потребитель - это не реализованный параметр API. (см документацию.) Он всегда будет пустой строкой. А сообщения не приходят из очереди потому что слишком маленький таймаут в методе Клиент.BasicConsumeMessage. Рекомендуется ставить хотя бы 3000 (3 секунды) для маленьких сообщений.
Исправил так, но все равно не получает.
Пока Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 30000) Цикл
В результате исполнение этой строки занимает 30 секунд и отладчик внутри цикла не останавливается. Подключенного потребителя на стороне RabbitMQ не видно.
Большее значение таймаута нецелесообразно, так как получение того же сообщения через HTTP занимает 69 мс.
Значит в этой очереди нет сообщений, либо коннекта с сервером раббита нет. Нужно в веб-интерефейсе RAbbitMQ посмотреть, чтобы на закладках Connections и channels были активные элементы в момент вызова метода BasicConsumeMessage()
Да, есть там сообщение. Я одно забрал через HTTP (для проверки настроек соединения на форме), а второе компонента не забирает (с теми же настройками, что примечательно). И потребителя подключенного не видно.
Видимо, где-то есть какая-то опция, которая не позволяет компоненте зарегистрировать потребителя, что и ведет к 30 секундному таймауту при вызове метода BasicConsumeMessage().
Если интересно, я могу и обработку целиком прикрепить. Может быть, проблема где-то в другом месте моего кода.
Да, нужна обработка. Желательно, чтобы в ней также программно создавались точки обмена и очереди с нужными свойствами