```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>grpc-solon-cloud-plugin</artifactId>
</dependency>
```

#### 1、描述

分布式扩展插件。基于 grpc 适配的 rpc 插件。此项目可使用 [Solon Cloud Discovery](/article/369) 插件包，作注册与发现用。

#### 2、配置示例

* pom.xml 增加注册与发现服务包：

来 [Solon Cloud Discovery](/article/369) 选一个插件包。


* 服务端 app.yml 增加 grpc 配置：

```yml
# 服务端声明
server.grpc:
  port: 9090
  name: demo-grpc
```

* 客户端 app.yml 增加 grpc 配置：

```yml
# 客户端本地临时声明（或者使用 solon cloud discovery 服务包的配置）
solon.cloud.local:
  discovery:
    service:
      demo-grpc:
        - "grpc://localhost:9090"
```
    
#### 3、代码应用


* 服务端（实现接口服务）

```java
@GrpcService
public class HelloImpl extends HelloHttpGrpc.HelloHttpImplBase{
    @Override
    public void sayHello(HelloHttpRequest request, StreamObserver<HelloHttpResponse> responseObserver) {
        String requestMsg = request.getMsg();
        String responseMsg = "hello " + requestMsg;
        HelloHttpResponse helloHttpResponse = HelloHttpResponse.newBuilder().setMsg(responseMsg).build();
        responseObserver.onNext(helloHttpResponse);
        responseObserver.onCompleted();
    }
}
```

* 客户端应用

```java
@Controller
public class TestController {

    @GrpcClient("demo-grpc")
    HelloHttpGrpc.HelloHttpBlockingStub helloHttp;

    @Mapping("/grpc/")
    public String test() {
        HelloHttpRequest request = HelloHttpRequest.newBuilder().setMsg("test").build();

        return helloHttp.sayHello(request).getMsg();
    }
}
```

#### 4、代码演示

[https://gitee.com/noear/solon-examples/tree/main/7.Solon-Remoting-Rpc/demo7013-rpc_grpc](https://gitee.com/noear/solon-examples/tree/main/7.Solon-Remoting-Rpc/demo7013-rpc_grpc)





