void ReceiveMessages(CancellationToken outer)
 {
     using (var source = CancellationTokenSource.CreateLinkedTokenSource(_disposal.Token, outer))
     {
         EnvelopeTransportContext context;
         while (_inbox.TakeMessage(source.Token, out context))
         {
             try
             {
                 ProcessMessage(context);
             }
             catch (Exception ex)
             {
                 var e = new DispatchRecoveryFailed(ex, context.Unpacked, context.QueueName);
                 _observer.Notify(e);
             }
         }
     }
 }
Exemple #2
0
        void ReceiveMessages(CancellationToken outer)
        {
            using (var source = CancellationTokenSource.CreateLinkedTokenSource(_disposal.Token, outer))
            {
                while (true)
                {
                    MessageTransportContext context;
                    try
                    {
                        if (!_inbox.TakeMessage(source.Token, out context))
                        {
                            // we didn't retrieve queue within the token lifetime.
                            // it's time to shutdown the server
                            break;
                        }
                    }
                    catch (Exception)
                    {
                        continue;
                    }

                    try
                    {
                        ProcessMessage(context);
                    }
                    catch (ThreadAbortException)
                    {
                        // Nothing. we are being shutdown
                    }
                    catch (Exception ex)
                    {
                        var e = new DispatchRecoveryFailed(ex, context, context.QueueName);
                        SystemObserver.Notify(e);
                    }
                }
            }
        }