[JAVA] Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen

Einführung

Wie kann ich den Betrieb des gRPC-Servers überprüfen? .. .. Wir stellen die Grpcurl vor, zu der ich gekommen bin, nachdem ich verschiedene Dinge untersucht habe. Es scheint, dass es verschiedene Funktionen gibt, von denen jedoch nur einige eingeführt werden.

** Bestätigte Umgebung **

gRPC-Serverkonfiguration

Entwicklungsumgebung

Was ist grpcurl?

https://github.com/fullstorydev/grpcurl Es ist ein Tool, das die Interaktion mit dem gRPC-Server wie ein Curl-Befehl realisieren kann. Wenn Sie den Befehl ausführen, wird die Antwort des gRPC-Servers im JSON-Format zurückgegeben.

Details sind in dem Link geschrieben, also denke ich, dass Sie es einfach lesen können.

Sie müssen go installieren.

Vorbereitung (Windows Edition)

1. Installieren Sie Go

** Download-Installation ** https://golang.org/dl/ Bitte laden Sie die für Ihre Umgebung geeignete von dieser Website herunter. Unter Windows können Sie es problemlos ausführen, indem Sie den Anweisungen des Installationsprogramms folgen.

** Einstellungen überprüfen ** Für Windows wurden den Umgebungsvariablen Folgendes hinzugefügt:

** Installationsbestätigung **

Geben Sie an der Eingabeaufforderung go version ein. Wenn die Versionsinformationen angezeigt werden, ist die Installation abgeschlossen.

> go version

2. Installieren Sie grpcurl

** Download-Installation **

Sie müssen lediglich den folgenden Befehl ausführen.

> go get github.com/fullstorydev/grpcurl
> go install github.com/fullstorydev/grpcurl/cmd/grpcurl

Der Befehl grpcurl wird im Unterordner bin des Speicherorts installiert, der in der zuvor bestätigten Umgebungsvariablen $ GOPATH angegeben ist. Standardmäßig ist% GOPATH% bin für Path angegeben, sodass Sie es sofort an der Eingabeaufforderung ausführen können sollten. Wenn Sie es nicht ausführen können, überprüfen Sie bitte die Pfadangabe.

** Installationsbestätigung **

Wenn Sie den folgenden Befehl ausführen können, ist die Installation von grpcurl abgeschlossen.

> grpcurl -help 

3. Reflexionseinstellungen

Aktivieren Sie die Reflektionsfunktion auf dem gRPC-Server.

Wenn Sie grpc-spring-boot-Starter verwenden, fügen Sie einfach die folgenden Einstellungen zu application.yml hinzu.

application.yml


grpc:
  enable-reflection: true

Hinweis: Wird von einigen Versionen von grpc-spring-boot-Starter nicht unterstützt. (2.3.2 ~)

Wenn Sie keinen Starter verwenden, können Sie die folgenden Schritte ausführen. (unbestätigt) https://github.com/grpc/grpc-java/blob/master/documentation/server-reflection-tutorial.md

Jetzt können Sie loslegen.

TODO-Vorbereitung (Mac Edition)

// coming soon ...

Versuchen Sie es mit

Starten Sie den gRPC-Server, um den Betrieb zu überprüfen.

Serviceliste anzeigen

> grpcurl -plaintext localhost:6565 list

-plaintext Sie können den Vorgang im Nur-Text-Modus überprüfen. Wenn nicht angegeben, kann dies von TLS bestätigt werden.

localhost:6565 Geben Sie den Hostnamen und die Portnummer des gRPC-Servers an.

Bei der Ausführung wird die Liste der Dienste auf der Serverseite wie unten gezeigt angezeigt.

Ausführungsergebnis


> grpcurl -plaintext localhost:6565 list
helloworld.HelloWorldService
goodbyeworld.GoodByeWorldService
grpc.health.v1.Health
grpc.reflection.v1alpha.ServerReflection

Methodenliste anzeigen

> grpcurl -plaintext localhost:6565 list helloworld.HelloWorldService

helloworld.HelloWorldService Geben Sie den Dienstnamen nach dem Befehl an, um die Dienstliste abzurufen.

Ausführungsergebnis


> grpcurl -plaintext localhost:6565 list helloworld.HelloWorldService
Greeting

Serviceabruf

> grpcurl -plaintext localhost:6565 helloworld.HelloWorldService/Greeting

helloworld.HelloWorldService/Greeting Geben Sie den in der Liste bestätigten Dienstnamen / Methodennamen an.

Bei der Ausführung wird das Ergebnis im JSON-Format angezeigt.

Ausführungsergebnis


> grpcurl -plaintext localhost:6565 helloworld.HelloWorldService/Greeting
{
  "message": "Hello World!"
}

Serviceabruf (mit Anforderungsparameter)

> grpcurl -plaintext -d '{"lang":"Java"}' localhost:6565 helloworld.HelloWorldService/Greeting

Sie können die Parameter im json-Format nach -d schreiben. Es wurde auf der Website geschrieben, aber es hat nicht funktioniert, weil das einfache Zitat wütend war: cold_sweat :. Deshalb. .. ..

> grpcurl -plaintext -d @ localhost:6565 helloworld.HelloWorldService/Greeting

Ich habe dies versucht, weil die Methode eingeführt wurde, mit der Sie den Parameter mit STDIN eingeben können, indem Sie '@' angeben, nachdem -d.

> grpcurl -plaintext -d @ localhost:6565 helloworld.HelloWorldService/Greeting
{
  "lang": "Java"
}
EOM

EOM Sie können unter Windows mit Strg + Z und unter Unix mit Strg + D eingeben. Es wird an der Windows-Eingabeaufforderung als "^ Z" angezeigt.

Als ich es lief, war das Ergebnis ausgezeichnet. : entspannt:

Ausführungsergebnis


> grpcurl -plaintext -d @ localhost:6565 helloworld.HelloWorldService/Greeting
{
  "lang": "Java"
}
^Z
{
  "message": "Hello Java World!"
}

Bonus

Wenn Sie das Ergebnis als Datei ausgeben möchten, sieht es so aus.

grpcurl -plaintext localhost:6565 helloworld.HelloWorldService/Greeting > GreetingResult.json

GreetingResult.json


{
  "message": "Hello World!"
}

Ende

Recommended Posts

Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Ich habe versucht, den Betrieb der http-Anfrage (Put) mit dem Talented API Tester zu überprüfen
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Ich habe versucht, die Server-Push-Funktion von Servlet 4.0 zu verwenden
Ich habe versucht, die Infrastrukturtechnologie der Ingenieure heutzutage mit dem Kochen zu vergleichen.
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich habe versucht, den Mechanismus von Emscripten mit einem deutschen Löser zu untersuchen
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit spiritueller Technik zu erhöhen
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Überprüfen Sie die Funktion von zwei Rollen mit einer Chat-Anwendung
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe versucht, den Chat mit dem Minecraft-Server mit der Discord-API zu verknüpfen
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, die Methode zu erklären
Ich habe versucht, die Bildvorschau mit Rails / jQuery zu implementieren
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ich habe versucht, das Problem des Google Tech Dev Guide zu lösen
Ich habe versucht, die verwendeten Methoden zusammenzufassen
Überprüfen Sie den Inhalt der Parameter mit pry
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, die Ergebnisse vor und nach der Date-Klasse mit einer geraden Zahl auszudrücken
Ich habe versucht, das Iterator-Muster zu implementieren
Ich habe versucht, die Stream-API zusammenzufassen
Überprüfen Sie die Funktion der Schnittstelle über den Thread
Ich habe den Ablauf der TCP-Kommunikation mit Spring Integration (Server Edition) untersucht.
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...
Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Ich habe versucht, die Sitzung in Rails zu organisieren
C # (Grund der Kapselung)
Ich möchte den Inhalt der Absicht var_dump
Ich habe versucht, Tomcat so einzustellen, dass das Servlet ausgeführt wird.
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Profiler von IntelliJ IDEA zu verwenden
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe die Anzahl der Taxis mit Ruby überprüft
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich wollte einen AP-Server starten und nur mit dem Befehl Maven debuggen
Ich habe versucht, was ich mit Stream leise versuchen wollte.
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren