improve deadLetters and logging when send queue overflow (#21355)
This commit is contained in:
parent
faf941b4c8
commit
432086b3f4
2 changed files with 26 additions and 10 deletions
|
|
@ -89,18 +89,20 @@ private[akka] object RemoteActorRefProvider {
|
|||
import EndpointManager.Send
|
||||
|
||||
override def !(message: Any)(implicit sender: ActorRef): Unit = message match {
|
||||
case Send(m, senderOption, _, seqOpt) ⇒
|
||||
case Send(m, senderOption, recipient, seqOpt) ⇒
|
||||
// else ignore: it is a reliably delivered message that might be retried later, and it has not yet deserved
|
||||
// the dead letter status
|
||||
if (seqOpt.isEmpty) super.!(m)(senderOption.orNull)
|
||||
if (seqOpt.isEmpty) super.!(DeadLetter(m, senderOption.getOrElse(_provider.deadLetters), recipient))
|
||||
case DeadLetter(Send(m, senderOption, recipient, seqOpt), _, _) ⇒
|
||||
// else ignore: it is a reliably delivered message that might be retried later, and it has not yet deserved
|
||||
// the dead letter status
|
||||
if (seqOpt.isEmpty) super.!(m)(senderOption.orNull)
|
||||
if (seqOpt.isEmpty) super.!(DeadLetter(m, senderOption.getOrElse(_provider.deadLetters), recipient))
|
||||
case env: OutboundEnvelope ⇒
|
||||
super.!(env.message)(env.sender.orNull)
|
||||
super.!(DeadLetter(env.message, env.sender.getOrElse(_provider.deadLetters),
|
||||
env.recipient.getOrElse(_provider.deadLetters)))
|
||||
case DeadLetter(env: OutboundEnvelope, _, _) ⇒
|
||||
super.!(env.message)(env.sender.orNull)
|
||||
super.!(DeadLetter(env.message, env.sender.getOrElse(_provider.deadLetters),
|
||||
env.recipient.getOrElse(_provider.deadLetters)))
|
||||
case _ ⇒ super.!(message)(sender)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue