Как поддерживать соединение ActiveMQ открытым?

Я использую Apache ActiveMQ для интеграции своего приложения в пользовательскую службу. Мне нужно делать этот забег всегда, а не один раз, как сейчас. Приведенный ниже код работает, но только для одного сообщения, мне нужно поддерживать активное соединение, чтобы получать все сообщения.

using (var connection = (Apache.NMS.ActiveMQ.Connection)factory.CreateConnection())
{
   connection.UserName = Username;
   connection.Password = Password;

   using (var session = connection.CreateSession())
   {
        IDestination destination = SessionUtil.GetDestination(session, "queue://" + Queue);

        using (IMessageConsumer consumer = session.CreateConsumer(destination))
        //using (IMessageConsumer consumer = session.CreateDurableConsumer(new ActiveMQTopic(Queue), "fpapp", null, false))
        {
            consumer.Listener += ConsumerOnListener;
            connection.Start();
        }
    }
}

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

Есть идеи?

PS: я совершенно новичок в ActiveMQ.

Спасибо


person eestein    schedule 07.10.2015    source источник


Ответы (1)


Пожалуйста, выньте объект соединения из блока использования. Это будет сделать. В C# API обычное соединение прочное, в STOMP нужно настроить пульсацию.

person msaero    schedule 07.10.2015
comment
msaero, что не так с этим кодом. stackoverflow.com/questions/50632265/ - person Mubashir Koul; 31.05.2018