Повторите попытку подключения, когда брокер не работает с первой попытки - PullRequest
0 голосов
/ 12 марта 2019

Я использую следующий код для создания прослушивателя очереди ActiveMQ Artemis:

using Apache.NMS;
using Apache.NMS.ActiveMQ;

...
try 
{
     var factory = new ConnectionFactory("failover://(tcp://localhost:61616)?transport.timeout=2000");
     var connection = factory.CreateConnection("user", "pass");
     connection.Start();

     var session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
     var queue = session.GetQueue("TestQueue");
     var consumer = session.CreateConsumer(queue, queueSelector);
     consumer.Listener += OnReceive;
}
catch (Exception e)
{
     // :'(
}

Используя failover:, соединение пытается восстановить себя, если я уничтожу посредника.И это работает, если я снова запускаю брокера.Проблема в том, что я запускаю приведенный выше код с брокером.Он генерирует исключение на connection.Start() (потому что брокер не работает) и никогда не пытается восстановить его снова (также потому, что session и consumer никогда не создаются).

Есть ли способвроде автоматически повторять это соединение, как в сценарии, в котором я выключаю брокер после его подключения?Или я должен реализовать это сам?(что-то, связанное с тем, что поток спит и пытается создать соединение).

...