github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/23_proto_actor/cluster/seed/main.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  
     6  	console "github.com/AsynkronIT/goconsole"
     7  	"github.com/AsynkronIT/protoactor-go/actor"
     8  	"github.com/AsynkronIT/protoactor-go/cluster"
     9  	"github.com/AsynkronIT/protoactor-go/cluster/consul"
    10  	"github.com/AsynkronIT/protoactor-go/examples/cluster/shared"
    11  	"github.com/AsynkronIT/protoactor-go/remote"
    12  )
    13  
    14  func main() {
    15  	// this node knows about Hello kind
    16  	remote.Register("Hello", actor.PropsFromProducer(func() actor.Actor {
    17  		return &shared.HelloActor{}
    18  	}))
    19  
    20  	cp, err := consul.New()
    21  	if err != nil {
    22  		log.Fatal(err)
    23  	}
    24  	cluster.Start("mycluster", "127.0.0.1:8080", cp)
    25  
    26  	hello := shared.GetHelloGrain("MyGrain")
    27  
    28  	res, err := hello.SayHello(&shared.HelloRequest{Name: "Roger"})
    29  	if err != nil {
    30  		log.Fatal(err)
    31  	}
    32  	log.Printf("Message from grain: %v", res.Message)
    33  	console.ReadLine()
    34  
    35  	cluster.Shutdown(true)
    36  }