Через некоторое время перестают доставляться сообщения через RabbitMQ подписчику

Рейтинг: 0Ответов: 0Опубликовано: 14.03.2023

У нас есть очерез сообщений RabbitMQ, в которой создаются очереди для подписчиков, к которым они подписываются и обмениваются сообщениями. После создания канала сообщения доставляются как нужно, но через некоторое время (2-3 суток) они перестают доходить до подписчика. Вопрос - как можно отловить причину такого поведения? я создаю канал таким способом:

chnl, errCreateChannel := structs.RabbitMQ.Channel()
if errCreateChannel != nil {
    log.Printf("Ошибка создания канала в RabbitMQ: %s", errCreateChannel.Error())
    return
}
errNotifyClose := chnl.NotifyClose(make(chan *amqp.Error, 10))
go func() {
    for errClose := range errNotifyClose {
        if errClose != nil {
            sentry.CaptureException(errClose)
        }
    }
}()

defer chnl.Close()

_, errQueueDeclare := chnl.QueueDeclare(robotUID+"-Server", false, true, false, false, nil)
if errQueueDeclare != nil {
    log.Printf("Ошибка соединения с очередью %s в RabbitMQ: %s", robotUID+"-Server", errQueueDeclare.Error())
    return
}

msgs, errConsume := chnl.Consume(robotUID+"-Server", "", true, false, false, false, nil)
if errConsume != nil {
    log.Printf("Ошибка получений сообщений с очереди %s в RabbitMQ: %s", robotUID+"-Server", errConsume.Error())
    return
}

Затем подписчик соединяется с каналом таким способом:

_connection = factory.CreateConnection();
_channel = _connection.CreateModel();
_channel.QueueDeclare(_cmd.Rmq.Queue, false, false, true, null);

var consumer = new EventingBasicConsumer(_channel);
consumer.Received += (_, ea) => { HandleMessage(ea); };
_channel.BasicConsume(_cmd.Rmq.Queue, true, consumer);

Я добавил NotifyClose для получения сообщений о закрытии канала сегодня, и попытаюсь отловить если в канале происходят закрытия из-за ошибки. Какие еще есть варианты для отслеживания этого поведения?

P.S после перезапуска Go приложения, где создаются очереди, сообщения начинают доходить до подписчиков, поэтому есть подозрение что теряется связь из приложения с RabbitMQ сервисом.

Ответы

Ответов пока нет.