Java के लिए gRPC: लाइब्रेरीज़ और उपयोग के उदाहरण
आधुनिक माइक्रोसर्विस आर्किटेक्चर में, सेवाओं के बीच कुशल संचार महत्वपूर्ण भूमिका निभाता है। सबसे अधिक प्रदर्शनकारी समाधानों में से एक gRPC है - Google द्वारा विकसित रिमोट प्रोसीजर कॉल (RPC) फ्रेमवर्क, जो HTTP/2 और Protocol Buffers पर आधारित है। इस लेख में, हम जानेंगे कि Java में gRPC के साथ काम करने के लिए किन लाइब्रेरीज़ की आवश्यकता है, प्रोजेक्ट कैसे सेटअप करें और एक सरल सर्वर और क्लाइंट कैसे लिखें।
Java में gRPC के लिए मुख्य लाइब्रेरीज़
Java में gRPC एप्लिकेशन विकसित करने के लिए grpc-java इकोसिस्टम का उपयोग किया जाता है। इसमें तीन प्रमुख घटक शामिल हैं:
- grpc-core — फ्रेमवर्क का मूल, जो ट्रांसपोर्ट लेयर और चैनल प्रबंधन को लागू करता है।
- grpc-stub — proto फ़ाइलों के आधार पर क्लाइंट और सर्वर स्टब्स (stubs) का जनरेशन।
- grpc-protobuf — डेटा सीरियलाइज़ेशन के लिए Protocol Buffers (protobuf) के साथ एकीकरण।
इसके अतिरिक्त, .proto फ़ाइलों से Java क्लासेस जनरेट करने के लिए protoc कंपाइलर की आवश्यकता हो सकती है। आधुनिक प्रोजेक्ट्स में, Maven या Gradle के प्लगइन्स का उपयोग करना सुविधाजनक है, जो इस प्रक्रिया को स्वचालित करते हैं।
Maven के साथ प्रोजेक्ट सेटअप
pom.xml में डिपेंडेंसी जोड़ें:
<dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>1.62.2</version></dependency><dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.62.2</version></dependency><dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.62.2</version></dependency><dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version></dependency>साथ ही, proto फ़ाइलों से कोड जनरेट करने के लिए प्लगइन जोड़ें:
<plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <protocArtifact>com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.2:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions></plugin>Protocol Buffers के माध्यम से सेवा परिभाषित करना
src/main/proto डायरेक्टरी में hello.proto फ़ाइल बनाएं:
syntax = "proto3";
package example;
service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {}}
message HelloRequest { string name = 1;}
message HelloReply { string message = 1;}mvn compile चलाने के बाद, HelloRequest, HelloReply और GreeterGrpc क्लासेस जनरेट हो जाएंगी।
Java में gRPC सर्वर का कार्यान्वयन
एक सर्वर क्लास बनाएं जो जनरेटेड इंटरफ़ेस को लागू करता है:
import io.grpc.Server;import io.grpc.ServerBuilder;import io.grpc.stub.StreamObserver;
public class HelloServer { public static void main(String[] args) throws Exception { Server server = ServerBuilder.forPort(50051) .addService