github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/23_proto_actor/distributedchannels/node1/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "runtime" 6 7 console "github.com/AsynkronIT/goconsole" 8 "github.com/AsynkronIT/protoactor-go/actor" 9 "github.com/AsynkronIT/protoactor-go/examples/distributedchannels/messages" 10 "github.com/AsynkronIT/protoactor-go/remote" 11 ) 12 13 // define root context 14 var rootContext = actor.EmptyRootContext 15 16 func newMyMessageSenderChannel() chan<- *messages.MyMessage { 17 channel := make(chan *messages.MyMessage) 18 remote := actor.NewPID("127.0.0.1:8080", "MyMessage") 19 go func() { 20 for msg := range channel { 21 rootContext.Send(remote, msg) 22 } 23 }() 24 25 return channel 26 } 27 28 func main() { 29 runtime.GOMAXPROCS(runtime.NumCPU()) 30 remote.Start("127.0.0.1:0") 31 channel := newMyMessageSenderChannel() 32 33 for i := 0; i < 10; i++ { 34 message := &messages.MyMessage{ 35 Message: fmt.Sprintf("hello %v", i), 36 } 37 channel <- message 38 } 39 40 console.ReadLine() 41 }