Соединение закрывается через несколько секунд при подключении к ActiveMQ, настроенному на AWS - PullRequest
0 голосов
/ 31 мая 2018

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

    using Apache.NMS;
    using Apache.NMS.Util;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;

namespace ApacheMQAsync
{
    class Program
    {

        protected static ITextMessage message = null;


        public static void Main(string[] args)
        {

            Uri connecturi = new Uri("URL:61617");

            Console.WriteLine("About to connect to " + connecturi);

            // NOTE: ensure the nmsprovider-activemq.config file exists in the executable folder.
            IConnectionFactory factory = new Apache.NMS.ActiveMQ.ConnectionFactory(connecturi);

            IConnection connection = factory.CreateConnection("username", "password");

            ISession session = connection.CreateSession();
            IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR");

            Console.WriteLine("Using destination: " + destination);

            // Create a consumer and producer
            IMessageConsumer consumer = session.CreateConsumer(destination);

            consumer.Listener += new MessageListener(OnMessage);
            connection.Start();
            // Wait for the message


            if (message == null)
            {
                Console.WriteLine("No message received!");
            }
            else
            {
                Console.WriteLine("Received message with ID:   " + message.NMSMessageId);
                Console.WriteLine("Received message with text: " + message.Text);
            }
        }

        protected static void OnMessage(IMessage receivedMsg)
        {
            message = receivedMsg as ITextMessage;
            message.Acknowledge();

        }
    }
}

На консоли отображается следующее сообщение не получено!и через несколько секунд консоль существует?

1 Ответ

0 голосов
/ 31 мая 2018

В этом нет ничего особенного, вам нужно что-то сделать, чтобы приложение продолжало работать, например, сделать паузу при вводе с консоли или зациклить на спящем вызове или другом вызове типа ожидания, а затем проверить что-то, чтобы увидеть, должно ли ваше приложение продолжаться.Клиент JMS не гарантированно будет держать ваше приложение открытым и работающим, и вы никогда не должны полагаться на него.

...