用go写一个rpcx的helloword
时间: 2023-09-21 12:06:25 浏览: 48
好的,以下是用 Go 语言编写一个 RPCX 的 Hello World 的示例代码:
服务端代码:
```go
package main
import (
"fmt"
"github.com/smallnest/rpcx/server"
)
type HelloService struct{}
func (s *HelloService) SayHello(name string, reply *string) error {
*reply = fmt.Sprintf("Hello, %s!", name)
return nil
}
func main() {
s := server.NewServer()
s.RegisterName("HelloService", new(HelloService))
s.Serve("tcp", "localhost:8972")
}
```
客户端代码:
```go
package main
import (
"fmt"
"github.com/smallnest/rpcx/client"
)
func main() {
d := client.NewPeer2PeerDiscovery("tcp@localhost:8972", "")
xclient := client.NewXClient("HelloService", client.Failover, client.RoundRobin, d, client.DefaultOption)
defer xclient.Close()
var reply string
err := xclient.Call(nil, "SayHello", "World", &reply)
if err != nil {
fmt.Printf("failed to call: %v\n", err)
return
}
fmt.Println(reply)
}
```
这段代码定义了一个名为 `HelloService` 的服务,提供了一个名为 `SayHello` 的方法,该方法接受一个字符串参数 `name`,并将其与字符串 `Hello, %s!` 拼接后返回。服务端将 `HelloService` 注册到了 RPCX 服务中心,并指定监听地址为 `localhost:8972`。客户端通过 `NewPeer2PeerDiscovery` 方法创建一个服务发现实例,然后通过 `NewXClient` 方法创建一个 RPCX 的客户端,并指定服务名称为 `HelloService`,服务发现方式为 `Failover`,负载均衡方式为 `RoundRobin`,服务发现实例为之前创建的 `Peer2PeerDiscovery` 实例,最后客户端调用 `Call` 方法调用服务端的 `SayHello` 方法,并将结果存储在 `reply` 变量中。