Я использую следующий код для создания прослушивателя очереди 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
никогда не создаются).
Есть ли способвроде автоматически повторять это соединение, как в сценарии, в котором я выключаю брокер после его подключения?Или я должен реализовать это сам?(что-то, связанное с тем, что поток спит и пытается создать соединение).