Использование GRPC + Springboot, плагин GRPC не способен автогенерировать объект потокового запросаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Использование GRPC + Springboot, плагин GRPC не способен автогенерировать объект потокового запроса

Сообщение Anonymous »

Я использую новый стартер Springboot от org.springframework.boot (подробнее ниже), и я могу использовать его, чтобы сделать простой API GRPC для возвращения Hello World. Теперь я пытался обновить ту же программу для поддержки потоковой передачи HTTP 2, но когда я пытаюсь создать свой проект, который в конечном итоге автогенерирует модели, не создает модели запросов. Class = "Lang-None PrettyPrint-Override">

Код: Выделить всё

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'
}
}
}
}

// ...
hello world.proto

Код: Выделить всё

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>

Код: Выделить всё

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();
}
}
Кодовое объяснение:

[*] Загрузочный код из Spring initializr.
Добавленные спецификации Protobuf без потока Ключевой слов. /> Добавлен Stream < /code> Ключевое слово в качестве префикса в запросе helloworld в Protobuf Spec. < /li>
Ожидаемый сгенерированный код немного отличается от того, что я ожидал, и невозможно найти способ получить запрос. Причина, что это не работает?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... he-streami
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»