gRPC Java: लाइब्रेरी, सेटअप और उपयोग के उदाहरण
gRPC एक आधुनिक, हाई-परफॉर्मेंस RPC (Remote Procedure Call) फ्रेमवर्क है जिसे Google ने डेवलप किया है। यह इंटरफ़ेस डेफिनिशन और डेटा सीरियलाइजेशन के लिए Protocol Buffers (protobuf) और ट्रांसपोर्ट के लिए HTTP/2 का उपयोग करता है। Java इकोसिस्टम में, gRPC आपको तेज़, टाइप-सेफ और स्केलेबल माइक्रोसर्विसेज बनाने में मदद करता है। इस पेज पर हम मुख्य लाइब्रेरी, प्रोजेक्ट सेटअप प्रक्रिया और सर्वर-क्लाइंट के वर्किंग उदाहरण देखेंगे।
Java में gRPC के लिए मुख्य लाइब्रेरी
Java में gRPC के साथ काम करने के लिए तीन मुख्य डिपेंडेंसी की ज़रूरत होती है:
- io.grpc:grpc-netty-shaded — Netty-आधारित ट्रांसपोर्ट लेयर। यह HTTP/2 और सुरक्षा (TLS) को सपोर्ट करता है। अधिकांश प्रोजेक्ट्स के लिए यही रेकमेंडेड है।
- io.grpc:grpc-protobuf — Protocol Buffers के साथ इंटीग्रेशन।
.protoफ़ाइलों से Java क्लासेस जेनरेट करने की सुविधा देता है। - io.grpc:grpc-stub — क्लाइंट और सर्वर स्टब्स बनाने के लिए लाइब्रेरी। रिमोट मेथड कॉल को आसान बनाती है।
इसके अलावा, protobuf-java (मैसेज हैंडलिंग के लिए) और protobuf-gradle-plugin (या Maven के लिए इसका विकल्प) बिल्ड टाइम पर कोड जेनरेशन के लिए ज़रूरी हो सकते हैं।
प्रोजेक्ट सेटअप (Maven)
pom.xml में निम्नलिखित डिपेंडेंसी जोड़ें:
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.62.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.62.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.62.0</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
साथ ही, .proto फ़ाइलों से कोड जेनरेट करने के लिए प्लगइन जोड़ें:
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.7.1</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.24.0:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
.proto फ़ाइल बनाना
src/main/proto/hello.proto फ़ाइल में सर्विस और मैसेज डिफाइन करें:
syntax = "proto3";
package hello;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {