Как узнать, когда очередь заканчивается, что мой поток потребляет MQ-сообщения - PullRequest
1 голос
/ 23 мая 2019

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

    this.connection = cf.CreateConnection();

        this.connection.ExceptionListener = new ExceptionListener(this.OnException);

        this.session = this.connection.CreateSession(true, AcknowledgeMode.AutoAcknowledge); // sessão com controle de transação

        IDestination destQueue = this.session.CreateQueue(filaMensagem);

        this.consumer = this.session.CreateConsumer(destQueue);

        // Create an AutoResetEvent for signalling between threads
        using (this.receiveCompleteEvent = new AutoResetEvent(false))
        {
            // Create and register the listener
            this.consumer.MessageListener = new MessageListener(this.OnNewMessageCallback); // Callback for message handling

            // Start the connection
            this.connection.Start();

            // Block and wait for the receiveCompleteEvent event to be signalled.
            this.receiveCompleteEvent.WaitOne();
        }

        // dispose receiveCompleteEvent
        this.consumer.Close();

        this.session.Close();

        this.connection.Close();
...