flush messages on shutdown, #20811
* StreamSupervisor as system actor so that it is stopped after ordinary actors * when transport is shutdown send flush message to all outbound associations (over control stream) and wait for ack or timeout
This commit is contained in:
parent
d99274a51f
commit
a021eb5ff4
8 changed files with 181 additions and 53 deletions
|
|
@ -79,6 +79,22 @@ object ActorMaterializer {
|
|||
def apply(materializerSettings: ActorMaterializerSettings)(implicit context: ActorRefFactory): ActorMaterializer =
|
||||
apply(Some(materializerSettings), None)
|
||||
|
||||
/**
|
||||
* INTERNAL API: Creates the `StreamSupervisor` as a system actor.
|
||||
*/
|
||||
private[akka] def systemMaterializer(materializerSettings: ActorMaterializerSettings, namePrefix: String,
|
||||
system: ExtendedActorSystem): ActorMaterializer = {
|
||||
val haveShutDown = new AtomicBoolean(false)
|
||||
new ActorMaterializerImpl(
|
||||
system,
|
||||
materializerSettings,
|
||||
system.dispatchers,
|
||||
system.systemActorOf(StreamSupervisor.props(materializerSettings, haveShutDown)
|
||||
.withDispatcher(materializerSettings.dispatcher), StreamSupervisor.nextName()),
|
||||
haveShutDown,
|
||||
FlowNames(system).name.copy(namePrefix))
|
||||
}
|
||||
|
||||
/**
|
||||
* Java API: Creates a ActorMaterializer which will execute every step of a transformation
|
||||
* pipeline within its own [[akka.actor.Actor]]. The required [[akka.actor.ActorRefFactory]]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue