Exemple #1
0
        private void MessageArrived(IAsyncResult result)
        {
            Envelope envelope = null;

            try
            {
                envelope = _client.EndReceive(result);

                if (envelope != null)
                {
                    var receivedEventArgs = new SubscriberEventArgs(envelope, SubscriberEventArgs.SubscriberEventType.Received);
                    DispatchEvent(EnvelopeReceived, receivedEventArgs);

                    _consumer.ConsumeEnvelope(envelope);

                    _client.Complete(envelope);

                    var completedEventArgs = new SubscriberEventArgs(envelope, SubscriberEventArgs.SubscriberEventType.Consumed);
                    DispatchEvent(EnvelopeConsumed, completedEventArgs);

                }
            }
            catch(TimeoutException)
            {
                // just reconnect
            }
            catch(Exception ex)
            {
                var eventArgs = new SubscriberEventArgs(envelope, SubscriberEventArgs.SubscriberEventType.Failed);
                eventArgs.ErrorMessage = ex.Message;
                DispatchEvent(EnvelopeFailed, eventArgs);
            }

            Subscribe();
        }
Exemple #2
0
 private void DispatchEvent(SubscriberEventHandler handler, SubscriberEventArgs eventArgs)
 {
     if (handler != null)
     {
         handler.Invoke(this, eventArgs);
     }
 }