Как уничтожить соединение RabbitMQ в C # или с помощью команды Windows? - PullRequest
0 голосов
/ 17 октября 2019

Я использую RabbitMQ.Net для обмена сообщениями и хочу протестировать различные сценарии. В одном случае я хочу посмотреть, что происходит, когда соединение обрывается. Как заставить соединение разорваться в середине теста?

Используя пример "Hello World" здесь в качестве примера, я хотел бы сделать это:

  1. Настройка отправителя и получателя
  2. Отправка сообщения
  3. Выполните вызов C # или выполните команду windows, чтобы разорвать соединение. Сделайте это до того, как получатель сможет получить сообщение
  4. Посмотрите, что происходит как с отправителем, так и с получателем

Как выполнить шаг № 3?

1 Ответ

3 голосов
/ 17 октября 2019

Поведение RabbitMQ четко определено в этом отношении, поэтому я не уверен, в чем смысл теста (сборка уже предположительно имеет автоматические тесты для этого поведения).

Если RabbitMQпри установленном сердцебиении отброшенный TCP-сокет будет обнаружен после прохождения двух интервалов сердцебиения. Если нет, то мертвый сокет будет обнаружен при попытке следующей сетевой операции. Это связано с тем, как работает TCP.

После того, как отброшенный сокет будет обнаружен, будет запущена логика закрытия соединения приложения. Это включает в себя отправку событий закрытия соединения и канала. Я быстро прочитал документацию по клиенту .NET и похоже, что они реализовали автоматическое восстановление. Вам, вероятно, придется прочитать код, чтобы узнать, что именно он делает, и, честно говоря, я бы не стал доверять ему настолько, насколько я мог бы его выбросить. Я предпочел бы обработать повторное подключение вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...