Как по Go way реализовать переподключение к RabbitMQ?

Добрый день. Был взят за основу пример github.com/streadway/amqp либы, был найден отрывочный код по реализации переподключения к ноде RabbitMQ https://gist.github.com/svcavallar/be2d40953eaf278... в случае закрытия соединения. Перепробовано несколько вариантов, видимо я в корне неверно представляю как это должно работать. Насколько я понимаю, при пересоздании объекта amqp.Connect, требуется пересоздать и объекты channel, queue и messages. Прошу показать (или поправить кусок кода), как должен выглядеть такой функционал, код прилагаю https://gist.github.com/cascad-s/7fca5c68639114eb9.... Заранее благодарю.
  • Вопрос задан
  • 2416 просмотров
Решения вопроса 1
rkravchik
@rkravchik
System Solutions
Детально не вчитывался, но перед каждым:
r_connection.NotifyClose(rabbitCloseError)
канал rabbitCloseError для уведомлений о закрытии соединения нужно пересоздавать через make.
Пруф: https://github.com/streadway/amqp/issues/160

У svcavallar как раз так и реализовано:
rabbitConn = connectToRabbitMQ(uri)
rabbitCloseError = make(chan *amqp.Error)  // <---- look here
rabbitConn.NotifyClose(rabbitCloseError)

Если будут вопросы, пишите комментарии к ответу.

P.S. Также я бы рекомендовал не блокировать программу "бесконечным" каналом, а хотя бы использовать сигналы ОС (даже под виндой).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы