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  }