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()

最后更新于