У меня есть следующий код:ActiveMQ связь с ClientId метания ошибки
_connectionFactory = new Apache.NMS.ActiveMQ.ConnectionFactory(_activeMqSettings.Connection.ServerUrl, "MyApplication");
_connection = _connectionFactory.CreateConnection(_activeMqSettings.Connection.UserName, _activeMqSettings.Connection.Password);
_connection.ConnectionInterruptedListener += _connection_ConnectionInterruptedListener;
_connection.ConnectionResumedListener += _connection_ConnectionResumedListener;
_session = _connection.CreateSession();
Первое соединение преуспевает, но последующие соединения забросить ошибку:
Broker: localhost - Client: MyApplication already connected from tcp://0:0:0:0:0:0:0:1:39932
этот код нормально работает без идентификатора клиента, но вызывает ошибку. У меня создалось впечатление, что предоставление ClientId будет повторно подключаться к брокеру без создания нового сеанса (так что потребительский счет остается неизменным), но я его неправильно реализую?
Когда я закрыл веб-сайт, а затем перезапустил его, я вижу, что соединение возобновляется при пожаре _connection_ConnectionResumedListener()
. Однако мой слушатель не берет никаких новых сообщений.
Есть в любом случае, чтобы получить ручку на сессии, и обновить слушателя, т.е. повторно запустить:
lock (ConsumerLocker)
{
if (_consumer == null)
{
_consumer = _session.CreateConsumer(new ActiveMQTopic(_activeMqSettings.Queues.OpsConsole));
_consumer.Listener += new MessageListener(messageReader);
}
}
Спасибо Тим. Что бы вы предложили для веб-сайта, потребляющего очередь? Когда сайт идет вниз (IIS Reset, upgrade, power offage и т. Д.) При возврате, он получает новую сессию. Брокер все еще думает, что старое соединение действительно (я могу видеть, что 2 потребителя прикреплены к очереди), поэтому сообщения теряются, поскольку они все еще увольняются с теперь призрачным соединением. Думаю, тема может быть ответом, но должно быть решение с очередью? – Ben
Почему бы вам не использовать встроенный протокол отказоустойчивости вместо того, чтобы пытаться выполнить свой переход на другой ресурс? –