Essayez gRPC avec Java, Maven

Aperçu

Découvrez gRPC! Il s'agit d'un mémorandum tel que l'ajustement de l'emplacement de construction.

environnement

Paramètres pom.xml

[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>
        <!--Parce qu'il est hors de la bibliothèque standard de Java 9-->
		<!-- 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>

Création de fichier Proto

Créez un dossier de ressources sous src / main et créez un fichier prototype.

[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;
}

Construire!

Vous devriez maintenant avoir le paquet io.grpc.example.helloworld et la source spécifiés ci-dessus.

Contrôle de fonctionnement

Maintenant, implémentons le serveur et le client et voyons comment cela fonctionne.

[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());
	}
}

Exécutez le client après le démarrage du serveur.

Reply: Hello Takeshi

Takeshi est de retour sain et sauf.

référence

GRPC Project Setup in Java Points pour l'introduction de gRPC en Java

Recommended Posts

Essayez gRPC avec Java, Maven
Essayez la communication bidirectionnelle avec gRPC Java
Essayez d'utiliser Redis avec Java (jar)
Développer gRPC sur la série Windows + Java 7 + Maven 2
Essayez d'utiliser Maven
java, mémo maven
Essayez Java 8 Stream
Essayons WebSocket avec Java et javascript!
Application Java CICS-Run - (2) Gestion de build avec Maven
Essayez de gérer les bibliothèques Java avec AWS CodeArtifact
Essayez grossièrement Java 9
Essayez d'utiliser la télécommande Wii en Java
[CircleCI 2.0] [Java] [Maven] [JUnit] Agréger les résultats des tests JUnit avec CircleCI 2.0
Présentation des tests Java automatisés avec JUnit 5 + Apache Maven
Essayez d'intégrer Ruby et Java avec Dapr
Dépôt Java d'Eclipse avec Maven: artefact manquant ~
Essayez d'implémenter TCP / IP + NIO avec JAVA
Essayez la communication en utilisant gRPC sur un serveur Android + Java
Essayez de déboguer un programme Java avec VS Code
Essayez DI avec Micronaut
Installez java avec Homebrew
Essayez de créer avec Trailblazer
Changer de siège avec Java
Installez Java avec Ansible
Essayez WebSocket avec jooby
Téléchargement confortable avec JAVA
Changer java avec direnv
Téléchargement Java avec Ansible
Raclons avec Java! !!
Construire Java avec Wercker
Essayez la valeur de retour Java
Conversion Endian avec JAVA
Exécutez Maven sur Java 8 lors de la compilation sur Java 6 et des tests sur Java 11
Essayez de vous connecter à l'émulateur AzureCosmosDB pour Docker avec Java
Essayez de créer Java dans un module natif avec GraalVM
(Java) BDD facile avec Spectrum?
Utiliser des couches Lambda avec Java
Créer un multi-projet Java avec Gradle
Premiers pas avec Java Collection
Essayez d'utiliser RocksDB avec Java
Configuration Java avec Spring MVC
Authentification de base avec Java 11 HttpClient
Expérimentons l'expansion en ligne Java
Exécuter un lot avec docker-compose avec Java batch
[Template] Connexion MySQL avec Java
Réécrire Java try-catch avec facultatif
Installez Java 7 avec Homebrew (cask)
[Java] Communication JSON avec jackson
Essayez d'utiliser GloVe avec Deeplearning4j
Java pour jouer avec Function
Essayez de gratter en utilisant Java [Note]
Essayez d'appeler JavaScript en Java
Essayez le type fonctionnel en Java! ①
Activer Java EE avec NetBeans 9
[Java] JavaConfig avec classe interne statique
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
Exploitons Excel avec Java! !!
Gestion des versions Java avec SDKMAN