web服务中引用微服务
在web服务中调用微服务的模式,web服务本身也可以是一个微服务。这样就可以与其它微服务之间进行调用。
如果想在web应用的controller中调用微服务的方法,需要在web服务启动前进行服务注册,采用AddWeaverService方法。
如:
type server struct {
weaver.Implements[weaver.Main]
ServiceDict weaver.Ref[dictSrv.T]
address weaver.Listener
}
func RunServe(ctx context.Context, s *server) error {
srv := nexframe.Server()
// 自动注册 ServiceWeaver 服务
err := srv.AddWeaverService(s)
if err != nil {
return fmt.Errorf("failed to add ServiceWeaver services: %v", err)
}
// 注册控制器
srv.RegisterController("/",
&books.BookController,
)
// 启动服务
server.SetPort(":8080")
server.Run()
}在 controller 中调用微服务的方法:
需要实现一个基础的service,如下:
然后在自己实现的controller中,继承BaseWeaverService,就可以在controller中调用微服务的方法了。
在俱体的接口实现在就可以按下面的方式进行服务调用了。 c.ServiceDict.Get()
最后更新于