You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gojobs/grpc_worker.go

77 lines
1.6 KiB

2 years ago
package gojobs
2 years ago
import (
2 years ago
"context"
2 years ago
"go.dtapp.net/gojobs/pb"
2 years ago
"go.dtapp.net/gouuid"
2 years ago
"google.golang.org/grpc"
)
// WorkerConfig 工作配置
type WorkerConfig struct {
2 years ago
Address string // 服务端口 127.0.0.1:8888
ClientIp string // 自己的ip地址
2 years ago
}
// Worker 工作
type Worker struct {
WorkerConfig // 配置
Pub pb.PubSubClient // 订阅
Conn *grpc.ClientConn // 链接信息
}
// NewWorker 创建工作
func NewWorker(config *WorkerConfig) *Worker {
if config.Address == "" {
2 years ago
panic("[工作线]请填写服务端口")
2 years ago
}
2 years ago
if config.ClientIp == "" {
panic("[定时任务]请填写ip地址")
}
2 years ago
w := &Worker{}
w.Address = config.Address
2 years ago
w.ClientIp = config.ClientIp
2 years ago
var err error
// 建立连接 获取client
w.Conn, err = grpc.Dial(w.Address, grpc.WithInsecure())
if err != nil {
2 years ago
panic("[工作线]{连接失败}" + err.Error())
2 years ago
}
// 新建一个客户端
w.Pub = pb.NewPubSubClient(w.Conn)
return w
}
2 years ago
// SubscribeCron 订阅服务
2 years ago
func (w *Worker) SubscribeCron() pb.PubSub_SubscribeClient {
stream, err := w.Pub.Subscribe(context.Background(), &pb.SubscribeRequest{
2 years ago
Id: gouuid.GetUuId(),
Value: prefix,
Ip: w.ClientIp,
})
if err != nil {
panic("[工作线]{订阅服务失败}" + err.Error())
}
2 years ago
return stream
2 years ago
}
// StartCron 启动任务
func (w *Worker) StartCron() pb.PubSub_SubscribeClient {
stream, err := w.Pub.Subscribe(context.Background(), &pb.SubscribeRequest{
Id: gouuid.GetUuId(),
Value: prefixSprintf(w.ClientIp),
Ip: w.ClientIp,
})
if err != nil {
panic("[工作线]{启动任务失败}" + err.Error())
}
return stream
}