使用gRPC与consul或Eureka一起通信Spring Boot应用程序

时间:2017-03-14 05:10:46

标签: spring spring-boot consul grpc grpc-java

我们如何在spring boot应用程序中使用grcp通信。我们如何使用通用服务发现方法与grpc一起使用来获得spring boot应用程序的终点。

2 个答案:

答案 0 :(得分:0)

对于服务发现,请实​​施您自己的NameResolver

答案 1 :(得分:0)

我使用下面的代码来获取实例发现客户端。它有助于使用reverse poxing调用所有服务器。

@Autowired
private DiscoveryClient discoveryClient;

及以下方法有助于使用服务名称

调用所有服务
@RequestMapping(method = RequestMethod.GET, value = "/senduser")
public ResponseEntity<?> sendMessageToAllServices() {
    user u=null;
    List<ServiceInstance> server=discoveryClient.getInstances("grpc-server");
    for (ServiceInstance serviceInstance : server) {

        String hostName=serviceInstance.getHost();
        int gRpcPort=Integer.parseInt(serviceInstance.getMetadata().get("grpc.port"));

        ManagedChannel channel=ManagedChannelBuilder.forAddress(hostName,gRpcPort).usePlaintext(true).build();
        UserServiceBlockingStub stub=UserServiceGrpc.newBlockingStub(channel);

        UserDetail user=UserDetail.newBuilder()
                    .setName("Thamira")
                    .setEmail("Thamira1005@gmail.com")
                    .setAge(24).setGender(Gender.Male)
                    .setPassword("password").build();

        u=stub.createUser(user);
    }

    return ResponseEntity.ok("User "+u);
}

我们可以将注册更改为领事或尤里卡。这种方法支持这两种方式。