mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-01-24 01:30:25 +08:00
30 lines
664 B
Go
30 lines
664 B
Go
package internal
|
|
|
|
import "github.com/tal-tech/go-zero/core/discov"
|
|
|
|
func NewRpcPubServer(etcdEndpoints []string, etcdKey, listenOn string, opts ...ServerOption) (Server, error) {
|
|
registerEtcd := func() error {
|
|
pubClient := discov.NewPublisher(etcdEndpoints, etcdKey, listenOn)
|
|
return pubClient.KeepAlive()
|
|
}
|
|
server := keepAliveServer{
|
|
registerEtcd: registerEtcd,
|
|
Server: NewRpcServer(listenOn, opts...),
|
|
}
|
|
|
|
return server, nil
|
|
}
|
|
|
|
type keepAliveServer struct {
|
|
registerEtcd func() error
|
|
Server
|
|
}
|
|
|
|
func (ags keepAliveServer) Start(fn RegisterFn) error {
|
|
if err := ags.registerEtcd(); err != nil {
|
|
return err
|
|
}
|
|
|
|
return ags.Server.Start(fn)
|
|
}
|