void Subscribe(Notifications notifications) { var errorsNotifications = notifications.Errors; errorsNotifications.MessageHasBeenSentToSecondLevelRetries += (sender, retry) => LogEvent(retry); errorsNotifications.MessageHasFailedAFirstLevelRetryAttempt += (sender, retry) => LogEvent(retry); errorsNotifications.MessageSentToErrorQueue += (sender, retry) => LogEvent(retry); }
EventsToObservables(Notifications notifications, ILog log) { #region ConvertEventToObservable IObservable<EventPattern<FailedMessage>> failedMessages = Observable.FromEventPattern<EventHandler<FailedMessage>, FailedMessage>( handler => notifications.Errors.MessageSentToErrorQueue += handler, handler => notifications.Errors.MessageSentToErrorQueue -= handler); IDisposable subscription = failedMessages .Subscribe(x => { FailedMessage failedMessage = x.EventArgs; log.Error($"Message {failedMessage.MessageId} moved to error queue", failedMessage.Exception); }); #endregion }