أعزائي مستخدمي gRPC/Spring، من أجل تحسين تجربة المستخدم لنظام grpc-ecosystem/grpc-spring، قمنا بتطوير هذا الاستطلاع كوسيلة لإنشاء خط اتصال مباشر. ملاحظاتك محل تقدير كبير.
القراءة: الإنجليزية | 中文
التوثيق: إنجليزي | 中文
يقوم تلقائيًا بتكوين خادم gRPC وتشغيله باستخدام تطبيقات @GrpcService
الخاصة بك
يقوم تلقائيًا بإنشاء وإدارة قنوات grpc وبذورها باستخدام @GrpcClient
يدعم نكهات grpc-java الأخرى (مثل gRPC التفاعلي (RxJava)، grpc-kotlin، ...)
io.grpc.BindableService
)StubFactory
مخصصًايدعم الربيع الأمن
يدعم سحابة الربيع
DiscoveryClient
الربيعي (جميع النكهات) يدعم Spring Sleuth كحل تتبع موزع
(في حالة وجود Brave-instrumentation-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 الافتراضي عبر حبوب NameResolver.Factory
. إذا لم تقم بتكوين هذه الحبة، فسيتم تخمين عنوان uri الافتراضي باستخدام المخطط الافتراضي والاسم (على سبيل المثال: dns:/<name>
):
يمكن تغيير هذه الإعدادات وغيرها عبر آلية خاصية Spring. يستخدم العملاء grpc.client.(serverName).
بادئة.
الرجوع إلى وثائقنا لمزيد من التفاصيل.
تدعم هذه المكتبة كلا من grpc-netty
و grpc-netty-shaded
. قد يمنع الإصدار الأحدث التعارضات مع إصدارات grpc غير المتوافقة أو التعارضات بين المكتبات التي تتطلب إصدارات مختلفة من netty.
ملاحظة: إذا كان 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 للحصول على إرشادات مفصلة.