Пример #1
0
        /// <summary>
        /// Waits on the specified queue for messages
        /// </summary>
        /// <param name="queue"></param>
        /// <param name="token"></param>
        /// <param name="onMessageReceived"></param>
        private void GetMessages(InMemoryQueue queue, CancellationToken token, ManualResetEvent resetEvent, Action <RawMessage, Action, Action> onMessageReceived)
        {
            while (true)
            {
                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }

                resetEvent.WaitOne(TimeSpan.FromSeconds(15));

                RawMessage message = null;
                while (queue.Dequeue(ref message))
                {
                    onMessageReceived(
                        message,
                        () => { /* Ack No Op for InMemory */ },
                        () =>
                    {
                        // Reject puts message back in queue
                        queue.Nack(message);
                    });
                }

                resetEvent.Reset();
            }
        }
        /// <summary>
        /// Waits on the specified queue for messages
        /// </summary>
        /// <param name="queue"></param>
        /// <param name="token"></param>
        /// <param name="onMessageReceived"></param>
        private void GetMessages(InMemoryQueue queue, CancellationToken token, ManualResetEvent resetEvent, Action<RawMessage, Action, Action> onMessageReceived)
        {
            while (true)
            {
                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }

                resetEvent.WaitOne(TimeSpan.FromSeconds(15));

                RawMessage message = null;
                while (queue.Dequeue(ref message))
                {
                    onMessageReceived(
                        message,
                     () => { /* Ack No Op for InMemory */ },
                     () =>
                     {
                         // Reject puts message back in queue
                         queue.Nack(message);
                     });
                }

                resetEvent.Reset();
            }
        }