后端:
1.阶段 5 task 服务边界落地
- 新增 cmd/task 与 services/task/{dao,rpc,sv},承载 task zrpc、tasks 表迁移和 task outbox 消费边界
- 新增 gateway/client/task、shared/contracts/task 和 task port,gateway /api/v1/task/* 切到 task zrpc client
- 将 task.urgency.promote.requested handler / relay / retry loop 迁入 cmd/task,单体 worker 不再消费 task outbox
- 保留单体 Agent 残留 task 查询的 publish-only 写入能力,避免迁移期 task 事件丢失
- active-scheduler task facts / due job scanner 切到 task RPC,并移除启动期 tasks 表依赖检查
- 更新阶段 5 文档,记录 task 切流点、旧实现保留、跨域 DB 依赖缩减和下一轮建议
- 补充 task rpc 示例配置
61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package rpc
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/LoveLosita/smartflow/backend/services/task/rpc/pb"
|
|
tasksv "github.com/LoveLosita/smartflow/backend/services/task/sv"
|
|
"github.com/zeromicro/go-zero/core/service"
|
|
"github.com/zeromicro/go-zero/zrpc"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
const (
|
|
defaultListenOn = "0.0.0.0:9085"
|
|
defaultTimeout = 6 * time.Second
|
|
)
|
|
|
|
type ServerOptions struct {
|
|
ListenOn string
|
|
Timeout time.Duration
|
|
Service *tasksv.TaskService
|
|
}
|
|
|
|
// NewServer 创建 task zrpc 服务端。
|
|
//
|
|
// 职责边界:
|
|
// 1. 只负责 zrpc server 配置与 gRPC handler 注册;
|
|
// 2. 不创建数据库、Redis 或业务服务,它们由 cmd/task 管理;
|
|
// 3. 返回 listenOn 供进程入口打印启动日志。
|
|
func NewServer(opts ServerOptions) (*zrpc.RpcServer, string, error) {
|
|
if opts.Service == nil {
|
|
return nil, "", errors.New("task service dependency not initialized")
|
|
}
|
|
|
|
listenOn := strings.TrimSpace(opts.ListenOn)
|
|
if listenOn == "" {
|
|
listenOn = defaultListenOn
|
|
}
|
|
timeout := opts.Timeout
|
|
if timeout <= 0 {
|
|
timeout = defaultTimeout
|
|
}
|
|
|
|
server, err := zrpc.NewServer(zrpc.RpcServerConf{
|
|
ServiceConf: service.ServiceConf{
|
|
Name: "task.rpc",
|
|
Mode: service.DevMode,
|
|
},
|
|
ListenOn: listenOn,
|
|
Timeout: int64(timeout / time.Millisecond),
|
|
}, func(grpcServer *grpc.Server) {
|
|
pb.RegisterTaskServer(grpcServer, NewHandler(opts.Service))
|
|
})
|
|
if err != nil {
|
|
return nil, "", err
|
|
}
|
|
return server, listenOn, nil
|
|
}
|