Esempio n. 1
0
        private void LogDeadLetter(AllDeadLetters d, string doneMsg)
        {
            var origin     = IsReal(d.Sender) ? $" from {d.Sender}" : "";
            var unwrapped  = WrappedMessage.Unwrap(d.Message);
            var messageStr = unwrapped?.GetType().Name ?? "null";
            var wrappedIn  = (d.Message is IWrappedMessage) ? $" wrapped in [${d.Message.GetType().Name}]" : "";

            string logMessage;

            switch (d)
            {
            case Dropped dropped:
                var destination = IsReal(d.Recipient) ? $" to {d.Recipient}" : "";
                logMessage = $"Message [{messageStr}]{wrappedIn}{origin}{destination} was dropped. {dropped.Reason}. " +
                             $"[{_count}] dead letters encountered{doneMsg}. ";
                break;

            case UnhandledMessage unhandled:
                destination = IsReal(d.Recipient) ? $" to {d.Recipient}" : "";
                logMessage  = $"Message [{messageStr}]{wrappedIn}{origin}{destination} was unhandled. " +
                              $"[{_count}] dead letters encountered{doneMsg}. ";
                break;

            default:
                logMessage = $"Message [{messageStr}]{wrappedIn}{origin} to {d.Recipient} was not delivered. " +
                             $"[{_count}] dead letters encountered{doneMsg}. " +
                             $"If this is not an expected behavior then {d.Recipient} may have terminated unexpectedly. ";
                break;
            }
            _eventStream.Publish(new Info(
                                     d.Recipient.Path.ToString(),
                                     d.Recipient.GetType(),
                                     logMessage +
                                     "This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' " +
                                     "and 'akka.log-dead-letters-during-shutdown'."));
        }
Esempio n. 2
0
 private bool IsWrappedSuppressed(AllDeadLetters d)
 {
     return(d is IWrappedMessage w && w.Message is IDeadLetterSuppression);
 }