rewrite mailbox selection logic, see #3342
- add “mailbox-requirement” key to dispatcher section - split out mailbox section, add akka.actor.default-mailbox - rewrite findMarker method and use it for Props.create() and getting the required mailbox of an actor - add ProducesMessageQueue trait for MailboxType so that requirements can be checked before trying to create the actor for real - verify actor as well as dispatcher requirements for message queue before creation, even in remote-deployed case - change MessageDispatcher constructor to take a Configurator, add that to migration guide
This commit is contained in:
parent
51ed174432
commit
f317aaf711
37 changed files with 843 additions and 419 deletions
|
|
@ -126,18 +126,16 @@ object CallingThreadDispatcher {
|
|||
*
|
||||
* @since 1.1
|
||||
*/
|
||||
class CallingThreadDispatcher(
|
||||
_prerequisites: DispatcherPrerequisites,
|
||||
val mailboxType: MailboxType,
|
||||
val mailboxTypeConfigured: Boolean) extends MessageDispatcher(_prerequisites) {
|
||||
class CallingThreadDispatcher(_configurator: MessageDispatcherConfigurator) extends MessageDispatcher(_configurator) {
|
||||
import CallingThreadDispatcher._
|
||||
import configurator.prerequisites._
|
||||
|
||||
val log = akka.event.Logging(prerequisites.eventStream, "CallingThreadDispatcher")
|
||||
val log = akka.event.Logging(eventStream, "CallingThreadDispatcher")
|
||||
|
||||
override def id: String = Id
|
||||
|
||||
protected[akka] override def createMailbox(actor: akka.actor.Cell) =
|
||||
new CallingThreadMailbox(actor, getMailboxType(actor, mailboxType, mailboxTypeConfigured))
|
||||
protected[akka] override def createMailbox(actor: akka.actor.Cell, mailboxType: MailboxType) =
|
||||
new CallingThreadMailbox(actor, mailboxType)
|
||||
|
||||
protected[akka] override def shutdown() {}
|
||||
|
||||
|
|
@ -303,7 +301,7 @@ class CallingThreadDispatcher(
|
|||
class CallingThreadDispatcherConfigurator(config: Config, prerequisites: DispatcherPrerequisites)
|
||||
extends MessageDispatcherConfigurator(config, prerequisites) {
|
||||
|
||||
private val instance = new CallingThreadDispatcher(prerequisites, mailboxType(), mailBoxTypeConfigured)
|
||||
private val instance = new CallingThreadDispatcher(this)
|
||||
|
||||
override def dispatcher(): MessageDispatcher = instance
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue