{"id":23907599,"url":"https://github.com/hemicharly/grpc-spring-boot-3","last_synced_at":"2025-04-11T05:43:43.252Z","repository":{"id":211813936,"uuid":"730002516","full_name":"hemicharly/grpc-spring-boot-3","owner":"hemicharly","description":"This educational project's main objective is to understand how gRPC works in conjunction with Spring Boot. We developed a simple calculator example, focusing on core functionality, and chose to use the latest versions of dependencies to ensure compatibility and explore the latest features available.","archived":false,"fork":false,"pushed_at":"2025-04-05T13:46:13.000Z","size":1915,"stargazers_count":8,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-05T14:28:51.887Z","etag":null,"topics":["gateway","gateway-api","grpc","java-21","micrometer","microservices","restful","spring-boot-3","tracer"],"latest_commit_sha":null,"homepage":"https://github.com/hemicharly/grpc-spring-boot-3","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hemicharly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-11T01:30:19.000Z","updated_at":"2025-03-31T04:55:02.000Z","dependencies_parsed_at":"2023-12-16T12:26:58.179Z","dependency_job_id":"d0ec0f6b-693b-41e4-a92f-b169bce22446","html_url":"https://github.com/hemicharly/grpc-spring-boot-3","commit_stats":{"total_commits":39,"total_committers":2,"mean_commits":19.5,"dds":0.05128205128205132,"last_synced_commit":"659077977aab8c784755f2fa86a03e5dd3248ddd"},"previous_names":["hemicharly/grpc-spring-boot-3"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hemicharly","download_url":"https://codeload.github.com/hemicharly/grpc-spring-boot-3/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351452,"owners_count":21089270,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gateway","gateway-api","grpc","java-21","micrometer","microservices","restful","spring-boot-3","tracer"],"created_at":"2025-01-05T03:13:21.085Z","updated_at":"2025-04-11T05:43:43.231Z","avatar_url":"https://github.com/hemicharly.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GRPC SPRING BOOT 3.3.x\n\nThis educational project's main objective is to understand how gRPC works in conjunction with Spring Boot.\nWe developed a simple calculator example, focusing on core functionality, and chose to use the latest versions of\ndependencies to ensure compatibility and explore the latest features available.\n\nThroughout the development process, we pay special attention to error handling to increase the robustness of the system.\nWe explore effective strategies for dealing with unexpected situations, ensuring a more reliable user experience.\nFurthermore, we highlight that gRPC was implemented in Go Lang, emphasizing the performance and efficiency of this\nlanguage in building distributed services.\n\nBy implementing detailed log tracking across applications, we provide a clearer, more granular view of the execution\nflow. The integration of gRPC with Spring Boot in Go Lang was carried out comprehensively, highlighting not only the\neffectiveness of gRPC, but also the conscious choice of the Go language for this purpose.\n\nBy sharing this knowledge, we hope to provide valuable insights into best practices in integrating gRPC with Spring\nBoot, especially when implemented in Go Lang. This approach aims to help developers looking to improve their distributed\ncommunication skills, highlighting the efficiency and flexibility provided by this specific combination of technologies.\n\n## Keywords\n\n*Keywords*: gRPC, Gateway, Gateway-Api, Spring Boot 3, Java 21, Micrometer, Tracer, RESTFul, Microservices, Docker,\nDocker Compose.\n\n### 1. Required requirements\n\n- Install Java 21\n- Install Maven 3.6.3\n- Go Lang 1.23.3\n- Install Docker\n- Install Docker Compose\n- Makefile\n\n### 2. Running the applications\n\n#### 2.1. GRPC Client consumer GRPC Server with java\n\n  \u003cimg src=\"docs/diagram_grpc_client.png\" alt=\"diagram_grpc_client.png\"\u003e\n\n##### 2.1.1. Steps:\n\n* install dependencies\n\n    ```bash\n    mvn clean install\n    ```\n\n* grpc-server\n\n    ```bash\n    cd grpc-server\n    mvn spring-boot:run\n    ```\n\n* grpc-client\n\n    ```bash\n    cd grpc-client\n    mvn spring-boot:run\n    ```\n\n* start with docker (**Optional**)\n\n    * Need to create an external network.\n  ```bash\n  make create-network\n  ```\n\n    * Start container\n  ```bash\n  make container-start\n  ```\n\n##### 2.1.2. GRPC Client Documentation\n\n* grpc-client\n    * [doc-api](http://localhost:8082/swagger-doc/api)\n    * [swagger-ui](http://localhost:8082/swagger-doc/index.html)\n    * [actuator](http://localhost:8082/actuator)\n\n* grpc-server\n    * [actuator](http://localhost:8081/actuator)\n    * Check out the list of current gRPC tools at [awesome-grpc](https://github.com/grpc-ecosystem/awesome-grpc#tools)\n\n* Reference\n    * What is gRPC [guide](https://grpc.io/docs/guides/)\n\n#### 2.2. GRPC Gateway-Api consumer GRPC Server with Go Lang\n\n  \u003cimg src=\"docs/diagram_grpc_gateway.png\" alt=\"diagram_grpc_gateway.png\"\u003e\n\n##### 2.2.1. Steps:\n\n**NOTE**: The grpc-server server needs to be running with docker container\n\n* container-grpc-server\n\n    ```bash\n    make container-grpc-server\n    ```\n\n* generate-pb\n\n    ```bash\n    make generate-pb\n    ```\n\n* go-mod-tidy\n\n    ```bash\n    make go-mod-tidy\n    ```\n\n* container-grpc-gateway\n\n    ```bash\n    make container-grpc-gateway\n    ```\n\n##### 2.2.2. GRPC Gateway-Api Documentation:\n\n* Example curl:\n\n    ```bash\n    curl --location 'http://0.0.0.0:8085/v1/calculator/add' \\\n    --header 'Content-Type: application/json' \\\n    --header 'Accept: application/json' \\\n    --data '{\n        \"num1\": 1,\n        \"num2\": 5\n    }'\n    ```\n  **NOTE**: Status code 200 with response body:\n    ```\n    {\n       \"result\": 6\n    }  \n    ```\n\n* Reference\n    * What is gRPC Gateway [guide](https://grpc-ecosystem.github.io/grpc-gateway/)\n\n### 3. Suggestions and Contributions Are Welcome! 🌟\n\nIf you have ideas, suggestions, or come across something that could be improved, please feel free to share!\n\n#### How You Can Contribute:\n\n1. **Suggest Enhancements**: Open an issue to discuss ideas and improvements. We want to hear what you think can make\n   the project even more amazing.\n2. **Report Issues**: Found a bug or something not working as expected? Open an issue describing the problem, and we'll\n   be happy to address it.\n3. **Contribute Code**: If you're a developer and want to contribute code, we'd love to review your pull requests.\n   Follow our contribution guidelines to make the process smooth.\n\n**Thanks in Advance for Your Amazing Contributions!** 🙌\n\nIf you have any questions or need assistance, don't hesitate to reach out.\n\nCheers,\n*Hemicharly Thiago*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemicharly%2Fgrpc-spring-boot-3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhemicharly%2Fgrpc-spring-boot-3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemicharly%2Fgrpc-spring-boot-3/lists"}