推而不拉
Actor
Source
ActorRef
object ActorIsFreeMessage
val source : Source[ActorIsFreeMessage, ActorRef] = Source.actorRef(???, ???)
然后可以附加
Flow
type Job = ???
val pullAJob : () => Job = ???
val jobFlow : Flow[ActorIsFreeMessage, Job] =
Flow[ActorIsFreeMessage].map[Job](_ => pullAJob())
val jobSource : Source[Job, ActorRef] = source via jobFlow
一旦这个新的源连接到一个接收器,其他参与者就可以向物化的发送消息。
val jobSink : Sink[Job, ActorRef] = ???
val streamRef = jobSource.to(jobSink).run()
//inside of the Actor
streamRef ! ActorIsFreeMessage