2015-10-07 3 views
0

Я использую Apache ActiveMQ для интеграции своего приложения в пользовательскую службу. Мне нужно сделать этот запуск всегда, а не один раз, как сейчас. Код ниже работает, но только для одного сообщения, мне нужно поддерживать активное соединение, чтобы получать все сообщения.Как открыть соединение 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.

Thanks

ответ

1

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

+0

Удивительный! :) Спасибо! – eestein