Closed exqmjmz closed 1 month ago
我本地执行没有问题,看一下你的eagle版本, 最新版本是 v0.17.0, 如果不是需要升级一下。
❯ eagle -v
eagle version v0.17.0
# 升级
eagle upgrade
另外,光提供cmd目录下的文件是不管用的,很多依赖文件都没有。
我本地执行没有问题,看一下你的eagle版本, 最新版本是 v0.17.0, 如果不是需要升级一下。
❯ eagle -v eagle version v0.17.0 # 升级 eagle upgrade
另外,光提供cmd目录下的文件是不管用的,很多依赖文件都没有。 eagle-demo-copy.zip 这个是整个项目的代码
已经找到问题,首先这不是最新创建的项目代码,所以会和模板创建的有所差异。
针对你给的代码,修改如下:
// cmd/server/main.go
// 修改前
func newApp(cfg *eagle.Config, hs *httpSrv.Server, cs *redisMQ.Server) *eagle.App {
return eagle.New(
eagle.WithName(cfg.Name),
eagle.WithVersion(cfg.Version),
eagle.WithLogger(logger.GetLogger()),
eagle.WithServer(
// init HTTP server
hs,
// init
cs,
),
)
}
// 修改步骤
// 1. 移除 18 行的
redisMQ "github.com/go-eagle/eagle/pkg/transport/consumer/redis"
// 2. 修改 newApp 如下:
func newApp(cfg *eagle.Config, hs *httpSrv.Server) *eagle.App {
return eagle.New(
eagle.WithName(cfg.Name),
eagle.WithVersion(cfg.Version),
eagle.WithLogger(logger.GetLogger()),
eagle.WithServer(
// init HTTP server
hs,
),
)
}
然后重新运行 wire
即可。
已经找到问题,首先这不是最新创建的项目代码,所以会和模板创建的有所差异。
针对你给的代码,修改如下:
// cmd/server/main.go // 修改前 func newApp(cfg *eagle.Config, hs *httpSrv.Server, cs *redisMQ.Server) *eagle.App { return eagle.New( eagle.WithName(cfg.Name), eagle.WithVersion(cfg.Version), eagle.WithLogger(logger.GetLogger()), eagle.WithServer( // init HTTP server hs, // init cs, ), ) } // 修改步骤 // 1. 移除 18 行的 redisMQ "github.com/go-eagle/eagle/pkg/transport/consumer/redis" // 2. 修改 newApp 如下: func newApp(cfg *eagle.Config, hs *httpSrv.Server) *eagle.App { return eagle.New( eagle.WithName(cfg.Name), eagle.WithVersion(cfg.Version), eagle.WithLogger(logger.GetLogger()), eagle.WithServer( // init HTTP server hs, ), ) }
然后重新运行
wire
即可。
移除后,没办法既是server端又是consumer,导则asynq那边的任务队列,没法执行了,一直都是pending状态 我是想实现单体程序架构
想放到一个服务里,明白了。目前根据报错提示是缺少一个 redis server
依赖,需要在 internal/server/server.go
里进行注入 NewConsumerServer
, 具体如下:
// 修改前
var ProviderSet = wire.NewSet(NewHTTPServer)
// 修改后
var ProviderSet = wire.NewSet(NewHTTPServer, NewConsumerServer)
然后 运行 wire
, Well Done. Good Luck.
cmd.zip 上面是我的cmd目录下的文件 在server目录中,执行wire ./... 生成wire_gen.go报错提示
wire: /Users/liangjiaming/code/eagle-demo/cmd/server/wire.go:16:1: inject InitApp: no provider found for github.com/go-eagle/eagle/pkg/transport/consumer/redis.Server needed by github.com/go-eagle/eagle/pkg/app.App in provider "newApp" (/Users/liangjiaming/code/eagle-demo/cmd/server/main.go:100:6) wire: eagle-demo/cmd/server: generate failed wire: at least one generate failure