Grpc: एक उच्च-कार्यक्षमता, मुक्त स्त्रोत सार्वत्रिक आरपीसी फ्रेमवर्क आहे.
GRPC वापरण्याचे अनेक फायदे आहेत.

  • हे क्लायंट / सर्व्हर पासवर्ड देऊन विकास सुलभ करते
  • हे एकाधिक भाषांना समर्थन देते

हे सर्व .proto फाइल परिभाषित करून सुरू होते, .proto फायली src / main / proto फाइलमध्ये असतात.

हे लक्षात ठेवा की योजनेची काही आवृत्ती ठेवण्यासाठी प्रोटोटाइप फायली रेपो ठेवणे चांगले आहे. अशा प्रकारे, इतर टीम डेव्हलपर्स त्यांच्याशी दुवा साधून स्वतःचे एसडीके तयार करू शकतात, अगदी इतर भाषांमध्ये देखील.

आम्ही src / main / proto / Order.proto वर ऑर्डर सेवा तयार करू

syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.egkatzioura.order.v1";

service OrderService {
    rpc ExecuteOrder(OrderRequest) returns (OrderResponse) {};
}

message OrderRequest {
    string email = 1;
    string product = 2;
    int32 amount = 3;
}

message OrderResponse {
    string info = 1;
}

Grpc सह कार्य करण्यासाठी, आपल्याला खालील बायनरी फायली स्थापित करण्याची आवश्यकता आहे

<dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty-shaded</artifactId>
            <version>1.39.0</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>1.39.0</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>1.39.0</version>
        </dependency>
        <dependency> <!-- necessary for Java 9+ -->
            <groupId>org.apache.tomcat</groupId>
            <artifactId>annotations-api</artifactId>
            <version>6.0.53</version>
            <scope>provided</scope>
        </dependency>
<build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.2</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.17.2:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.39.0:exe:${os.detected.classifier}</pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Mvn clean install लक्ष्य / धड्यांवर धडे तयार करेल.
हे धडे क्लायंटशी संवाद साधण्यासाठी चालवण्यासाठी सर्व्हर फिरवण्यासाठी पुरेसे आहेत.

पुढे, सर्व्हर फिरवण्याचा प्रयत्न करूया.

आम्ही एक सेवा अंमलबजावणी तयार करू

package com.egkatzioura.order.impl;

import com.egkatzioura.order.v1.Order;
import com.egkatzioura.order.v1.OrderServiceGrpc;

import io.grpc.stub.StreamObserver;

public class OrderServiceImpl extends OrderServiceGrpc.OrderServiceImplBase {

    @Override
    public void executeOrder(Order.OrderRequest request, StreamObserver&amp;lt;Order.OrderResponse&amp;gt; responseObserver) {

        Order.OrderResponse response = Order.OrderResponse.newBuilder()
                                                          .setInfo("Hi "+request.getEmail()+", you order has been executed")
                                                          .build();

        responseObserver.onNext(response);
        responseObserver.onCompleted();
    }
}

मग आमचा मुख्य धडा म्हणजे सर्व्हरभोवती फिरणे, क्वेरीची सेवा करणे.

package com.egkatzioura.order;

import java.io.IOException;

import com.egkatzioura.order.impl.OrderServiceImpl;
import io.grpc.Server;
import io.grpc.ServerBuilder;

public class Application {

    public static void main(String[] args) throws IOException, InterruptedException {
        Server server = ServerBuilder
                .forPort(8080)
                .addService(new OrderServiceImpl()).build();

        server.start();
        server.awaitTermination();
    }

}

सर्व्हर चालू असताना, आम्ही दुसरा मूलभूत वर्ग जोडू शकतो ज्याने सर्व्हरशी संवाद साधला पाहिजे – सर्व्हरवर grpc क्वेरी करा

package com.egkatzioura.order;

import com.egkatzioura.order.v1.Order;
import com.egkatzioura.order.v1.OrderServiceGrpc;

import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;

public class ApplicationClient {
    public static void main(String[] args) {
        ManagedChannel managedChannel = ManagedChannelBuilder.forAddress("localhost", 8080)
                                                      .usePlaintext()
                                                      .build();

        OrderServiceGrpc.OrderServiceBlockingStub orderServiceBlockingStub
                = OrderServiceGrpc.newBlockingStub(managedChannel);

        Order.OrderRequest orderRequest = Order.OrderRequest.newBuilder()
                                             .setEmail("hello@word.com")
                                             .setProduct("no-name")
                                             .setAmount(3)
                                             .build();

        Order.OrderResponse orderResponse = orderServiceBlockingStub.executeOrder(orderRequest);

        System.out.println("Received response: "+orderResponse.getInfo());

        managedChannel.shutdown();
    }
}

म्हणून आम्ही फक्त आपोआप grpc कोड तयार केला, आम्ही सर्व्हर चालवून grpc सेवा दिली, և क्लायंटला सर्व्हरकडून प्रतिसाद मिळाला.

स्त्रोत कोड वेबसाइटवर आढळू शकतो गिथब:.

आमच्या जेसीजी प्रोग्राम पार्टनर इमॅन्युअल गॅटसियुरस यांच्या परवानगीने जावा कोड गीक्स मध्ये प्रकाशित. मूळ लेख येथे पहा: तुमच्या Java अनुप्रयोगामध्ये Grpc जोडा

जावा कोड गीक्स सहभागींनी व्यक्त केलेली मते त्यांची आहेत.