Уважаемые пользователи gRPC/Spring, чтобы улучшить взаимодействие с пользователем grpc-ecosystem/grpc-spring, мы разработали этот опрос как средство установления прямой линии связи. Ваш отзыв очень ценен.
README: английский | 中文
Документация: английский | 中文
Автоматически настраивает и запускает сервер gRPC с вашими реализациями @GrpcService
Автоматически создает каналы и заглушки grpc и управляет ими с помощью @GrpcClient
Поддерживает другие варианты grpc-java (например, Reactive gRPC (RxJava), grpc-kotlin,...)
io.grpc.BindableService
).StubFactory
.Поддерживает Spring-Security
Поддерживает весеннее облако
DiscoveryClient
(все варианты). Поддерживает Spring Sleuth как решение для распределенной трассировки.
(Если присутствует храбрый инструментарий-grpc)
Поддерживает глобальные и пользовательские перехватчики сервера/клиента gRPC.
Автоматическая метрическая поддержка (на основе микрометра/актуатора)
Также работает с (не закрашенным) grpc-netty.
Последняя версия — 3.1.0.RELEASE
Она была скомпилирована с Spring-Boot 3.2.4
и Spring-Cloud 2023.0.0
но она также совместима с большим количеством других версий. Обзор всех версий и соответствующих версий библиотек можно найти в нашей документации.
Примечание. Этот проект также можно использовать без Spring-Boot, однако для этого потребуется некоторая настройка компонента вручную.
Чтобы добавить зависимость с помощью Maven, используйте следующее:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Чтобы добавить зависимость с помощью Gradle:
dependencies {
implementation ' net.devh:grpc-spring-boot-starter:3.1.0.RELEASE '
}
Чтобы добавить зависимость с помощью Maven, используйте следующее:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Чтобы добавить зависимость с помощью Gradle:
dependencies {
implementation ' net.devh:grpc-server-spring-boot-starter:3.1.0.RELEASE '
}
Аннотируйте реализацию интерфейса вашего сервера с помощью @GrpcService
.
@ GrpcService
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 ();
}
}
По умолчанию сервер grpc будет прослушивать порт 9090
. Эти и другие настройки можно изменить с помощью механизма свойств Spring. Сервер использует grpc.server.
префикс.
Более подробную информацию можно найти в нашей документации.
Чтобы добавить зависимость с помощью Maven, используйте следующее:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Чтобы добавить зависимость с помощью Gradle:
dependencies {
compile ' net.devh:grpc-client-spring-boot-starter:3.1.0.RELEASE '
}
Аннотируйте поле заглушки клиента grpc с помощью @GrpcClient(serverName)
Не используйте вместе с @Autowired
или @Inject
@ GrpcClient ( "gRPC server name" )
private GreeterGrpc . GreeterBlockingStub greeterStub ;
Примечание. Вы можете использовать одно и то же имя сервера grpc для нескольких каналов, а также разные заглушки (даже с разными перехватчиками).
Затем вы можете отправлять запросы на свой сервер следующим образом:
HelloReply response = stub . sayHello ( HelloRequest . newBuilder (). setName ( name ). build ());
Целевой адрес можно настроить для каждого клиента индивидуально. Однако в некоторых случаях вы можете просто полагаться на конфигурацию по умолчанию. Вы можете настроить сопоставление URL-адресов по умолчанию с помощью bean-компонентов NameResolver.Factory
. Если вы не настроите этот bean-компонент, то URI по умолчанию будет угадываться с использованием схемы по умолчанию и имени (например: dns:/<name>
):
Эти и другие настройки можно изменить с помощью механизма свойств Spring. Клиенты используют grpc.client.(serverName).
префикс.
Более подробную информацию можно найти в нашей документации.
Эта библиотека поддерживает как grpc-netty
, так и grpc-netty-shaded
. Последний вариант может предотвратить конфликты с несовместимыми версиями grpc или конфликты между библиотеками, которым требуются разные версии netty.
Примечание. Если в пути к классам присутствует затененная сеть, то эта библиотека всегда будет отдавать ей предпочтение перед незатененной grpc-netty.
Вы можете использовать его с Maven следующим образом:
< dependency >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty</ artifactId >
< version >${grpcVersion}</ version >
</ dependency >
<!-- For both -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
<!-- For the server (only) -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
<!-- For the client (only) -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
и вот так при использовании Gradle:
implementation " io.grpc:grpc-netty: ${ grpcVersion } "
implementation ' net.devh:grpc-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For both
implementation ' net.devh:grpc-client-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For the client (only)
implementation ' net.devh:grpc-server-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For the server (only)
Подробнее о наших примерах проектов читайте здесь.
Обратитесь за помощью к нашей документации.
Взносы всегда приветствуются! Пожалуйста, посетите CONTRIBUTING.md для получения подробных инструкций.