Как удалить модель и соединение при сбое сетиC#

Место общения программистов C#
Anonymous
Как удалить модель и соединение при сбое сети

Сообщение Anonymous »

Мне известно об автоматическом подключении и восстановлении топологии. Однако я реализую подключение к стороннему API, и в документации в нескольких местах указано, что автоматическое восстановление клиента RMQ не следует использовать.
Я прикрепляю ConnectionShutdownHandler:

Код: Выделить всё

public class ThirdPartyConnection
...
_connection.ConnectionShutdown += ConnectionShutdownHandler;
...
void ConnectionShutdownHandler(object source, ShutdownEventArgs args)
{
var connection = (IConnection)source;
if (args.ReplyCode == 200)
{
_logger.Information($"Connection shutdown [{args.ReplyCode}]: {args.ReplyText}. {string.Join(",", connection.ShutdownReport)}");
}
else
{
_logger.Error(args.Exception, $"Connection terminated [{args.ReplyCode}]: {args.ReplyText}. {string.Join(",", connection.ShutdownReport)}");
}
}
}
Вызов Dispose в соединении, если ReplyCode не равен 200, блокируется. Думаю, это имеет смысл, поскольку я нахожусь внутри обработчика событий, поэтому удаление экземпляра, вызвавшего событие, не имеет смысла.
https://github.com/rabbitmq /rabbitmq-dotnet-client/issues/154 предполагает, что нет необходимости выполнять очистку, поскольку Connection освобождает все ресурсы в случае ошибки.
Как я могу избавиться от соединения и модели, когда соединение разрывается?

Подробнее здесь: https://stackoverflow.com/questions/790 ... rk-failure

Вернуться в «C#»