Micro实践(三)

使用命令行工具调用微服务

用list命令可以查看微服务。

$ micro list services
com.foo.srv.hello
go.micro.http.broker

名为com.foo.srv.hello的服务是我们的目标服务,go.micro.http.broker是消息代理服务的默认实现。

我们可以使用命令get查看此服务的详细信息,其中包括服务版本,端点定义,元数据和节点信息等。

$ micro get service com.foo.srv.hello
service  com.foo.srv.hello
version latest
ID      Address Metadata
com.foo.srv.hello-7c5ef5ef-22d5-4a10-a5c9-1408d16562f9  10.0.1.6:56004  broker=http,protocol=mucp,registry=mdns,server=mucp,transport=http
Endpoint: Hello.Call
Request: {
        name string
}
Response: {
        msg string
}
...

我们可以用call命令去调用这些接口。

$ micro call com.foo.srv.hello Hello.Call '{"name": "Bill"}'
{
        "msg": "Hello Bill"
}

交互模式下的服务调用

调用cli命令后,我们将进入交互模式:

$ micro cli
micro>

可以用list命令。

$ micro cli
micro> list
com.foo.srv.hello
go.micro.http.broker
micro>
micro> get com.foo.srv.hello
service  com.foo.srv.hello
version latest
ID      Address Metadata
com.foo.srv.hello-7c5ef5ef-22d5-4a10-a5c9-1408d16562f9
...
micro>
micro> call com.foo.srv.hello Hello.Call {"name": "Bill2"}
{
        "msg": "Hello Bill2"
}
micro>

基于Web的客户端的呼叫服务

Micro还提供基于Web的客户端,该客户端支持用户在浏览器中调用服务。

运行之后micro web,您将在http://127.0.0.1:8082/client中找到以下界面。您可以通过单击“执行”按钮来调用选定的服务/端点,然后响应内容将以JSON格式显示在右侧。

通过代码调用服务

上面提到的方法只是方便了运行时调试。通常,我们通过代码调用服务。

用以下布局创建一个客户项目:

.
├── main.go
├── plugin.go
├── proto/hello
│   └── hello.proto
│   └── hello.pb.go
│   └── hello.pb.micro.go
├── go.mod
├── go.sum

除了main.go之外,其他文件的内容与上一篇文章中描述的相同,在此不再赘述。

这是main.go中的代码:

package main

import (
	"context"
	"fmt"
	"github.com/micro/go-micro/v2"
	hello "hello/proto/hello"
)

func main() {
	// New Service
	service := micro.NewService(
		micro.Name("com.foo.srv.hello.client"), //name the client service
	)
	// Initialise service
	service.Init()

	//create hello service client
	helloClient := hello.NewHelloService("", service.Client())

	//invoke hello service method
	resp, err := helloClient.Call(context.TODO(), &hello.Request{Name: "Bill 4"})
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(resp.Msg)
}

在编写代码之后,您可以编译并运行:

$ go run main.go plugin.go
Hello Bill 4
$

将显示预期的响应。 如果该服务当前未运行,将报告错误:

$ go run main.go plugin.go 
{"id":"go.micro.client","code":500,"detail":"service com.foo.srv.hello: not found","status":"Internal Server Error"}
$

欢迎转载,本文地址: https://blog.prodrich.com/detail/15/

带着使命来到世上的你,给他人提供价值,才有价值