Versuchen Sie gRPC mit Java, Maven

Überblick

Erleben Sie gRPC! Es ist ein Memorandum wie die Anpassung des Build-Standorts.

Umgebung

pom.xml Einstellungen

[pom.xml]


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com</groupId>
  <artifactId>grpc.demo2</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>grpc.demo2</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

  <dependencies>
		<!-- https://mvnrepository.com/artifact/io.grpc/grpc-protobuf -->
		<dependency>
		    <groupId>io.grpc</groupId>
		    <artifactId>grpc-protobuf</artifactId>
		    <version>1.22.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/io.grpc/grpc-netty -->
		<dependency>
		    <groupId>io.grpc</groupId>
		    <artifactId>grpc-netty</artifactId>
		    <version>1.22.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/io.grpc/grpc-stub -->
		<dependency>
		    <groupId>io.grpc</groupId>
		    <artifactId>grpc-stub</artifactId>
		    <version>1.22.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
		<dependency>
		    <groupId>com.google.protobuf</groupId>
		    <artifactId>protobuf-java</artifactId>
		    <version>3.9.0</version>
		</dependency>
        <!--Weil es aus der Standardbibliothek von Java 9 stammt-->
		<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
		<dependency>
		    <groupId>javax.annotation</groupId>
		    <artifactId>javax.annotation-api</artifactId>
		    <version>1.3.2</version>
		</dependency>
  </dependencies>
 
  <build>
    <defaultGoal>clean generate-sources compile install</defaultGoal>
	<plugins>
		<plugin>
			<groupId>com.github.os72</groupId>
			<artifactId>protoc-jar-maven-plugin</artifactId>
			<version>3.8.0</version>
			<executions>
				<execution>
					<phase>generate-sources</phase>
					<goals>
						<goal>run</goal>
					</goals>
					<configuration>
						<includeMavenTypes>direct</includeMavenTypes>
						
						<inputDirectories>
							<include>src/main/resources</include>
						</inputDirectories>
						
						<outputTargets>
							<outputTarget>
								<type>java</type>
								<outputDirectory>src/main/java</outputDirectory>
							</outputTarget>
							<outputTarget>
								<type>grpc-java</type>
								<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.22.1</pluginArtifact>
								<outputDirectory>src/main/java</outputDirectory>
							</outputTarget>
						</outputTargets>
					</configuration>
				</execution>
			</executions>
		</plugin>	
	</plugins>
  </build>
</project>

Proto-Dateierstellung

Erstellen Sie einen Ressourcenordner unter src / main und erstellen Sie eine Prototypdatei.

[helloworld.proto]


syntax = "proto3";

option java_multiple_files = true;
option java_package = "io.grpc.example.helloworld";

package helloworld;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Bauen!

Sie sollten jetzt das oben angegebene io.grpc.example.helloworld-Paket und die oben angegebene Quelle haben.

Funktionsprüfung

Lassen Sie uns nun den Server und den Client implementieren und sehen, wie es funktioniert.

[Server.java]


public class Server {

	public static void main(String[] args) throws Exception {

		int port = 8080;

		io.grpc.Server server = ServerBuilder.forPort(port).addService((BindableService) new GreeterImpl()).build();

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

[GreeterImpl.java]


public class GreeterImpl extends GreeterGrpc.GreeterImplBase {

	public void sayHello(HelloRequest reqest, StreamObserver<HelloReply> responseObserver) {

		HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + reqest.getName()).build();

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

[Client.java]


public class Client {
	public static void main(String[] args) {

		String name = "Takeshi";
		int port = 8080;

		ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", port).usePlaintext().build();

		GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc.newBlockingStub(channel);

		HelloRequest request = HelloRequest.newBuilder().setName(name).build();
		HelloReply reply = stub.sayHello(request);

		System.out.println("Reply: " + reply.getMessage());
	}
}

Führen Sie den Client nach dem Starten des Servers aus.

Reply: Hello Takeshi

Takeshi ist sicher zurück.

Referenz

GRPC Project Setup in Java Punkte für die Einführung von gRPC in Java

Recommended Posts

Versuchen Sie gRPC mit Java, Maven
Versuchen Sie die bidirektionale Kommunikation mit gRPC Java
Versuchen Sie es mit Redis mit Java (jar)
Entwickeln Sie gRPC unter Windows + Java 7 + Maven 2
Versuchen Sie es mit Maven
Java, Maven Memo
Probieren Sie Java 8 Stream aus
Probieren wir WebSocket mit Java und Javascript aus!
CICS-Java-Anwendung ausführen- (2) Build-Management mit Maven
Versuchen Sie, Java-Bibliotheken mit AWS CodeArtifact zu verwalten
Versuchen Sie es mit Java 9
Versuchen Sie es mit der Wii-Fernbedienung in Java
[CircleCI 2.0] [Java] [Maven] [JUnit] Aggregieren Sie die JUnit-Testergebnisse mit CircleCI 2.0
Einführung automatisierter Java-Tests mit JUnit 5 + Apache Maven
Versuchen Sie, Ruby und Java in Dapr zu integrieren
Java Repository von Eclipse mit Maven: Fehlendes Artefakt ~
Versuchen Sie, TCP / IP + NIO mit JAVA zu implementieren
Versuchen Sie die Kommunikation mit gRPC auf einem Android + Java-Server
Versuchen Sie, ein Java-Programm mit VS-Code zu debuggen
Versuchen Sie DI mit Micronaut
Installieren Sie Java mit Homebrew
Versuchen Sie es mit Trailblazer
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Probieren Sie WebSocket mit Jooby aus
Bequemer Download mit JAVA
Schalten Sie Java mit direnv
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Versuchen Sie es mit dem Java-Rückgabewert
Endian-Konvertierung mit JAVA
Führen Sie Maven unter Java 8 aus, während Sie unter Java 6 kompilieren und unter Java 11 testen
Versuchen Sie, mit Java eine Verbindung zu AzureCosmosDB Emulator for Docker herzustellen
Versuchen Sie, Java mit GraalVM in ein natives Modul zu integrieren
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
Versuchen Sie es mit RocksDB mit Java
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Experimentieren wir mit der Java-Inline-Erweiterung
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Versuchen Sie es mit GloVe mit Deeplearning4j
Java zum Spielen mit Function
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie, JavaScript in Java aufzurufen
Probieren Sie den Funktionstyp in Java aus! ①
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Lassen Sie uns Excel mit Java betreiben! !!
Java-Versionsverwaltung mit SDKMAN