[JAVA] J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl

introduction

Comment puis-je vérifier le fonctionnement du serveur gRPC? .. .. Présentation du grpcurl auquel je suis arrivé après avoir étudié diverses choses. Il semble qu'il existe diverses fonctions, mais seules certaines d'entre elles seront introduites.

** Environnement confirmé **

Configuration du serveur gRPC

Environnement de développement

Qu'est-ce que grpcurl

https://github.com/fullstorydev/grpcurl C'est un outil qui peut réaliser l'interaction avec le serveur gRPC comme une commande curl. Lorsque vous exécutez la commande, la réponse du serveur gRPC sera renvoyée au format json.

Les détails sont écrits dans le lien, donc je pense que vous pouvez simplement le lire.

Vous devez installer go.

Préparation (édition Windows)

1. Installez Go

** Télécharger-Installer ** https://golang.org/dl/ Veuillez télécharger celui qui convient à votre environnement depuis ce site. Pour Windows, vous pouvez le compléter sans aucun problème en suivant les instructions de l'installateur.

** Vérifier les paramètres ** Pour Windows, les éléments suivants ont été ajoutés aux variables d'environnement:

** Confirmation d'installation **

Tapez go version à l'invite de commande et si les informations de version s'affichent, l'installation est terminée.

> go version

2. Installez grpcurl

** Télécharger-Installer **

Tout ce que vous avez à faire est d'exécuter la commande suivante.

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

La commande grpcurl sera installée dans le sous-dossier bin de l'emplacement spécifié dans la variable d'environnement $ GOPATH confirmée précédemment. Par défaut,% GOPATH% bin est spécifié pour Path, vous devriez donc pouvoir l'exécuter immédiatement à partir de l'invite de commande. Si vous ne pouvez pas l'exécuter, veuillez vérifier la spécification du chemin.

** Confirmation d'installation **

Si vous pouvez exécuter la commande suivante, l'installation de grpcurl est terminée.

> grpcurl -help 

3. Paramètres de réflexion

Activez la fonction de réflexion sur le serveur gRPC.

Si vous utilisez grpc-spring-boot-starter, ajoutez simplement les paramètres suivants à application.yml.

application.yml


grpc:
  enable-reflection: true

Remarque: non pris en charge par certaines versions de grpc-spring-boot-starter. (2.3.2 ~)

Si vous n'utilisez pas de démarreur, vous pouvez suivre les étapes ci-dessous. (non confirmé) https://github.com/grpc/grpc-java/blob/master/documentation/server-reflection-tutorial.md

Maintenant, vous êtes prêt à partir.

Préparation TODO (édition Mac)

// coming soon ...

Essayez d'utiliser

Démarrez le serveur gRPC dont le fonctionnement doit être vérifié.

Afficher la liste des services

> grpcurl -plaintext localhost:6565 list

-plaintext Vous pouvez vérifier l'opération en mode texte brut. S'il est omis, il peut être confirmé par TLS.

localhost:6565 Spécifiez le nom d'hôte et le numéro de port du serveur gRPC.

Une fois exécuté, la liste des services côté serveur sera affichée comme indiqué ci-dessous.

Résultat d'exécution


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

Afficher la liste des méthodes

> grpcurl -plaintext localhost:6565 list helloworld.HelloWorldService

helloworld.HelloWorldService Spécifiez le nom du service après la commande pour obtenir la liste des services.

Résultat d'exécution


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

Appel de service

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

helloworld.HelloWorldService/Greeting Spécifiez le nom du service / le nom de la méthode confirmé dans la liste.

Une fois exécuté, le résultat sera affiché au format json.

Résultat d'exécution


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

Appel de service (avec paramètre de demande)

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

Vous pouvez écrire les paramètres au format json après -d. Il a été écrit sur le site, mais cela n'a pas fonctionné car le guillemet simple était en colère: cold_sweat:. Donc. .. ..

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

J'ai essayé cela parce que la méthode selon laquelle vous pouvez entrer le paramètre avec STDIN en spécifiant '@' après l'introduction de -d.

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

EOM Vous pouvez entrer avec Ctrl + Z sous Windows et Ctrl + D sous Unix. Il s'affiche sous la forme «^ Z» à l'invite de commande Windows.

Quand je l'ai couru, le résultat était excellent. : détendu:

Résultat d'exécution


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

prime

Si vous souhaitez afficher le résultat sous forme de fichier, il ressemble à ceci.

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

GreetingResult.json


{
  "message": "Hello World!"
}

fin

Recommended Posts

J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
J'ai essayé de vérifier le fonctionnement de la requête http (Put) avec Talented API Tester
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
J'ai essayé d'utiliser la fonction Server Push de Servlet 4.0
J'ai essayé de comparer la technologie d'infrastructure des ingénieurs ces jours-ci avec la cuisine.
J'ai essayé de réduire la capacité de Spring Boot
J'ai essayé d'étudier le mécanisme d'Emscripten en l'utilisant avec un solveur allemand
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
J'ai essayé de résumer les bases de kotlin et java
Vérifier le fonctionnement de deux rôles avec une application de chat
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de lier le chat avec le serveur de Minecraft avec l'API Discord
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé de résoudre le problème de Google Tech Dev Guide
J'ai essayé de résumer les méthodes utilisées
Vérifiez le contenu des paramètres avec le levier
J'ai essayé de démarrer avec Web Assembly
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
J'ai essayé d'implémenter le modèle Iterator
J'ai essayé de résumer l'API Stream
Vérifiez le fonctionnement de l'interface à travers le thread
J'ai examiné le flux de communication TCP avec Spring Integration (édition serveur)
J'ai essayé de résoudre le problème de la séquence Tribonacci en Ruby, avec récurrence.
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...
J'ai essayé de créer une application d'apprentissage automatique avec Dash (+ Docker) part1 ~ Construction de l'environnement et vérification du fonctionnement ~
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai essayé de faire une authentification de base avec Java
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé de gérer les informations de connexion avec JMX
J'ai essayé d'organiser la session en Rails
C # (base de l'encapsulation)
Je veux var_dump le contenu de l'intention
J'ai essayé de configurer tomcat pour exécuter le servlet.
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé d'utiliser le profileur d'IntelliJ IDEA
J'ai essayé de casser le bloc avec java (1)
J'ai vérifié le nombre de taxis avec Ruby
Rails6 Je veux créer un tableau de valeurs avec une case à cocher
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
Je voulais démarrer un serveur AP et déboguer avec juste la commande Maven
J'ai essayé ce que je voulais essayer avec Stream doucement.
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC