C# RabbitMQ. Событие успешного авто восстановления коннекта
Использую RabbitMQ.Client, и тестирую функцию AutomaticRecoveryEnabled. Все хорошо работает при проблемах с Tcp коннектом или при перезапуске RabbitMQ. Хорошо бы иметь событие на отключение от RabbitMQ и событие подключения (восстановления связи) Событие на отключение есть - это ConnectionShutdown, а событие которое должно возникнуть при отработке автоматического реконекта я не нашел. При Публикации сообщения возникает BrokerUnreachableException, если RabbitMQ не на связи, других идентификаторов недоступности RabbitMQ я не нашел.
_factory = new ConnectionFactory
{
Uri = new Uri(amqpConnStr),
AutomaticRecoveryEnabled = true,
NetworkRecoveryInterval = TimeSpan.FromSeconds(5),
RequestedHeartbeat = TimeSpan.FromSeconds(5)
};
_connection = _factory.CreateConnection();
_connection.ConnectionShutdown+= (sender, args) =>
{
//Возникает при отключении RabbitMq
};
Ответы (1 шт):
Автор решения: Aldmi
→ Ссылка
Для этого можно использовать события в channel
_connection = _factory.CreateConnection();
_channel = _connection.CreateModel();
_channel.ModelShutdown += (sender, args) =>
{
//Отключение
};
((IRecoverable)_channel).Recovery += (sender, args) =>
{
//Восстановление связи
};