Mit GRPC + Springboot kann das GRPC -Plugin das Streaming -Anforderungsobjekt nicht autogenerierenJava

Java-Forum
Anonymous
 Mit GRPC + Springboot kann das GRPC -Plugin das Streaming -Anforderungsobjekt nicht autogenerieren

Post by Anonymous »

Ich verwende den neuen Springboot -Starter von org.springframework.boot (Weitere Details unten) und ich kann sie verwenden, um eine einfache GRPC -API zu erstellen, um die Hello World zurückzugeben. Jetzt habe ich versucht, dasselbe Programm zu aktualisieren, um die Streaming -HTTP 2 -Anforderung zu unterstützen, aber als ich versuche, mein Projekt zu erstellen, das schließlich die Modelle autogeneriert, erstellt die Modelle nicht die Anforderungsmodelle. class = "Lang-none hübschprint-override">

Code: Select all

plugins {
id 'java'
id 'org.springframework.boot' version '3.4.4'
id 'io.spring.dependency-management' version '1.1.7'
id 'com.google.protobuf' version '0.9.4'
}

repositories {
mavenCentral()
}

ext {
set('springGrpcVersion', "0.4.0")
}

dependencies {
implementation 'io.grpc:grpc-services'
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'io.grpc:grpc-netty-shaded'
modules {
module("io.grpc:grpc-netty") {
replacedBy("io.grpc:grpc-netty-shaded", "Use Netty shaded instead of regular Netty")
}
}
}

dependencyManagement {
imports {
mavenBom "org.springframework.grpc:spring-grpc-dependencies:${springGrpcVersion}"
}
}

protobuf {
protoc {
artifact = 'com.google.protobuf:protoc'
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java'
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
}

// ...
Hallo Welt.

Code: Select all

syntax = "proto3";

option java_package = "com.asr.example.grpc.demo.model";
option java_multiple_files = true;

message HelloWorldRequest {
optional string name = 1;
}

message HelloWorldResponse {
string greeting = 1;
}

service HelloWorldService {
rpc sayHello(stream HelloWorldRequest) returns (stream HelloWorldResponse);
}
HelloworldController.java[/b]

Code: Select all

import com.asr.example.grpc.demo.model.HelloWorldRequest;
import com.asr.example.grpc.demo.model.HelloWorldResponse;
import com.asr.example.grpc.demo.model.HelloWorldServiceGrpc;
import io.grpc.stub.StreamObserver;
import org.springframework.grpc.server.service.GrpcService;
import org.springframework.util.StringUtils;

import java.text.MessageFormat;

@GrpcService
public class HelloWorldController extends HelloWorldServiceGrpc.HelloWorldServiceImplBase {

@Override
public StreamObserver sayHello(StreamObserver responseObserver) {
return super.sayHello(responseObserver);
}

/* Expected:
public StreamObserver sayHello(HelloWorldRequest request, StreamObserver responseObserver) {
// Further Implementation
}
*/

// Original without streaming
// @Override
public void sayHello(
HelloWorldRequest request,
StreamObserver responseObserver) {
responseObserver
.onNext(HelloWorldResponse.newBuilder()
.setGreeting(MessageFormat.format(
"Hello {0}!!!",
StringUtils.hasText(request.getName()) ? request.getName() : "Arvind")
)
.build()
);
responseObserver
.onCompleted();
}
}
Code Erläuterung:

Bootstrade -Code aus Spring Initializr. /> Stream < /code> Schlüsselwort als Präfix in der Helloworld -Anforderung in Protobuf -Spezifikation. Funktioniert nicht?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post