/// <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(); } }