스프링 부트 및 gRPC 및 Protobuf 사용
스프링 부트와 함께 gRPC를 사용하는 예나 생각이 있으신 분?
그래도 괜찮으시다면 여기 gRPC spring-boot-starter를 작성했습니다.
grpc-spring-boot-starter는 @GRPCService 지원 콩을 사용하여 내장된gRPC 서버를 자동 설정 및 실행합니다.
가장 간단한 예는 다음과 같습니다.
@GRpcService(grpcServiceOuterClass = GreeterGrpc.class)
public static class GreeterService implements GreeterGrpc.Greeter {
@Override
public void sayHello(GreeterOuterClass.HelloRequest request, StreamObserver<GreeterOuterClass.HelloReply> responseObserver) {
// omitted
}
}
프로젝트의 README 파일에 스타터를 Eureka와 통합하는 방법의 예도 있습니다.
https://github.com/yidongnan/grpc-spring-boot-starter
인서버
@GrpcService(GreeterGrpc.class)
public class GrpcServerService extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder().setMessage("Hello =============> " + req.getName()).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}
인클라이언트
@GrpcClient("gRPC server name")
private Channel serverChannel;
GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc.newBlockingStub(serverChannel);
HelloReply response = stub.sayHello(HelloRequest.newBuilder().setName(name).build());
gRPC 클라이언트 라이브러리가 필요한 경우(스텁을 소비하는 경우)는 내 라이브러리 https://github.com/sfcodes/grpc-client-spring-boot를 참조하십시오.
이 라이브러리는 클래스 경로를 자동으로 스캔하고 모든 gRPC stub 클래스를 검색하여 인스턴스화하고 Application Context에 콩으로 등록합니다.@Autowire
다른 봄콩처럼 주사하는 거야예를 들어 다음과 같습니다.
@RestController
public class GreeterController {
@Autowired // <===== gRPC stub is autowired!
private GreeterGrpc.GreeterBlockingStub greeterStub;
@RequestMapping(value = "/sayhello")
public String sayHello(@RequestParam String name) {
HelloRequest request = HelloRequest.newBuilder().setName(name).build();
HelloReply reply = greeterStub.sayHello(request);
return reply.getMessage();
}
}
gRPC 서버 라이브러리의 경우,LogNet/grpc-spring-boot-starter
.
https://spring.io/blog/2015/03/22/using-google-protocol-buffers-with-spring-mvc-based-rest-services,부터 시작합니다.
Protobuf 3.0.0-beta4 및 Protostuff 라이브러리를 기반으로 한 관련 SPR-13203 HttpMessageConverter에 대한 SPR-13589 ProtobufHttpMessageConverter 지원을 살펴봅니다.
그것은 proto3에 대한 지원이 봄 5에 나올 예정입니다.개발 중이므로 프로젝트에 중요한 사항을 투표하고 제기할 것을 권장합니다.
여기서는 gRpc와 eureka를 사용하여 의사소통을 합니다.이 프로젝트는 스프링 부트를 기반으로 합니다.
https://github.com/WThamira/grpc-spring-boot
추가적으로 당신은 영사로서 등록도 할 수 있습니다.이 보고의 완전한 예
https://github.com/WThamira/gRpc-spring-boot-example
이 maven 의존성은 gRpc에 도움이 됩니다.
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>1.0.1</version>
</dependency>
아래에 플러그인이 필요합니다.
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<!-- The version of protoc must match protobuf-java. If you don't depend
on protobuf-java directly, you will be transitively depending on the protobuf-java
version that grpc depends on. -->
<protocArtifact>com.google.protobuf:protoc:3.0.2:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.1:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
이 Github Repo[1]에서는 gRPC를 사용하여 사용자를 couchbase DB에 삽입하고 표시하는 예를 볼 수 있습니다.rpc 메서드를 찾으려면 proto 파일[2]을 참조하십시오.
보통 gRPC 클라이언트는 bloom을 좋아한다.RPC 는, 서비스에의 액세스에 사용됩니다.사절 프록시를 사용하면 HTTP/1.1을 사용하여 서비스를 트랜스코드 및 액세스할 수 있습니다.readme 파일에는 컨피규레이션파일을 작성하고 도커 파일을 사용하여 사절 프록시를 실행하는 단계가 나와 있습니다.
[1] https://github.com/Senthuran100/grpc-User
[2] https://github.com/Senthuran100/grpc-User/blob/master/src/main/proto/user.proto
GRPC로 심플한 Springboot 앱을 작성.이 GitHub repo에는 Server와 Client의 양쪽 예가 있습니다.Repo는 별도의 Maven 모듈(grpc-interface)을 가지고 있으며, 여기에서 Proto 파일을 선언하고 Java 소스 코드를 생성하면 서버와 클라이언트 앱 모두에서 lib로 사용할 수 있습니다.
https://github.com/vali7394/grpc-springboot-repo
이 페이지를 사용할 수 있습니다.종속성 및 빌드 태그가 제공되었습니다.https://www.baeldung.com/grpc-introduction'
언급URL : https://stackoverflow.com/questions/31938242/using-spring-boot-together-with-grpc-and-protobuf
'programing' 카테고리의 다른 글
AngularJs에서 ng-Cloak 지시어를 실제로 사용하는 방법은 무엇입니까? (0) | 2023.03.08 |
---|---|
Spring MVC 및 부트를 통한 정적 콘텐츠 갱신 (0) | 2023.03.08 |
스프링 부팅 시 요청 대상에 잘못된 문자가 있습니다. (0) | 2023.03.08 |
폴더를 라라벨로 작성하다 (0) | 2023.03.08 |
워드프레스 컨택폼7 텍스트 영역 콜 및 행이 작은 화면에서 변경됨 (0) | 2023.03.08 |