github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/23_proto_actor/mailboxstats/main.go (about) 1 package main 2 3 import ( 4 "log" 5 "time" 6 7 console "github.com/AsynkronIT/goconsole" 8 "github.com/AsynkronIT/protoactor-go/actor" 9 "github.com/AsynkronIT/protoactor-go/mailbox" 10 ) 11 12 type mailboxLogger struct{} 13 14 func (m *mailboxLogger) MailboxStarted() { 15 log.Print("Mailbox started") 16 } 17 func (m *mailboxLogger) MessagePosted(msg interface{}) { 18 log.Printf("Message posted %v", msg) 19 } 20 func (m *mailboxLogger) MessageReceived(msg interface{}) { 21 log.Printf("Message received %v", msg) 22 } 23 func (m *mailboxLogger) MailboxEmpty() { 24 log.Print("No more messages") 25 } 26 27 func main() { 28 rootContext := actor.EmptyRootContext 29 props := actor.PropsFromFunc(func(ctx actor.Context) { 30 31 }).WithMailbox(mailbox.Unbounded(&mailboxLogger{})) 32 pid := rootContext.Spawn(props) 33 rootContext.Send(pid, "Hello") 34 time.Sleep(1 * time.Second) 35 rootContext.Send(pid, 1) 36 console.ReadLine() 37 }