Adds remote-procedure-call via gRPC#3189
Conversation
PR SummaryThis PR implements remote procedure calls using gRPC in Java. It introduces two microservices, Changes
autogenerated by presubmit.ai |
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- 390358d: remote-procedure-call
Files Processed (30)
- pom.xml (1 hunk)
- remote-procedure-call/README.md (1 hunk)
- remote-procedure-call/cart-service/etc/cart-service.urm.png (0 hunks)
- remote-procedure-call/cart-service/etc/cart-service.urm.puml (1 hunk)
- remote-procedure-call/cart-service/pom.xml (1 hunk)
- remote-procedure-call/cart-service/src/main/java/com/iluwatar/rpc/cart/Main.java (1 hunk)
- remote-procedure-call/cart-service/src/main/java/com/iluwatar/rpc/cart/model/ProductInCart.java (1 hunk)
- remote-procedure-call/cart-service/src/main/java/com/iluwatar/rpc/cart/service/CartService.java (1 hunk)
- remote-procedure-call/cart-service/src/main/java/com/iluwatar/rpc/cart/service/CartServiceImpl.java (1 hunk)
- remote-procedure-call/cart-service/src/main/resources/logback.xml (1 hunk)
- remote-procedure-call/cart-service/src/test/java/com/iluwatar/rpc/cart/service/CartServiceImplIntegrationTest.java (1 hunk)
- remote-procedure-call/cart-service/src/test/java/com/iluwatar/rpc/cart/service/CartServiceImplTest.java (1 hunk)
- remote-procedure-call/cart-service/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker (1 hunk)
- remote-procedure-call/etc/remote-procedure-call.urm.puml (1 hunk)
- remote-procedure-call/pom.xml (1 hunk)
- remote-procedure-call/product-service/etc/product-service.urm.png (0 hunks)
- remote-procedure-call/product-service/etc/product-service.urm.puml (1 hunk)
- remote-procedure-call/product-service/pom.xml (1 hunk)
- remote-procedure-call/product-service/src/main/java/com/iluwatar/rpc/product/Main.java (1 hunk)
- remote-procedure-call/product-service/src/main/java/com/iluwatar/rpc/product/mocks/ProductMocks.java (1 hunk)
- remote-procedure-call/product-service/src/main/java/com/iluwatar/rpc/product/model/Product.java (1 hunk)
- remote-procedure-call/product-service/src/main/java/com/iluwatar/rpc/product/service/ProductService.java (1 hunk)
- remote-procedure-call/product-service/src/main/java/com/iluwatar/rpc/product/service/ProductServiceGrpcImpl.java (1 hunk)
- remote-procedure-call/product-service/src/main/java/com/iluwatar/rpc/product/service/ProductServiceImpl.java (1 hunk)
- remote-procedure-call/product-service/src/main/resources/logback.xml (1 hunk)
- remote-procedure-call/product-service/src/test/java/com/iluwatar/rpc/product/service/ProductServiceGrpcImplTest.java (1 hunk)
- remote-procedure-call/product-service/src/test/java/com/iluwatar/rpc/product/service/ProductServiceImplTest.java (1 hunk)
- remote-procedure-call/product-service/src/test/java/com/iluwatar/rpc/product/service/ProductServiceIntegrationTest.java (1 hunk)
- remote-procedure-call/product-service/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker (1 hunk)
- remote-procedure-call/proto/shopping.proto (1 hunk)
Actionable Comments (0)
Skipped Comments (0)
|
| @@ -0,0 +1,147 @@ | |||
| --- | |||
There was a problem hiding this comment.
README.md needs to follow the specified format. See https://github.com/iluwatar/java-design-patterns/wiki/01.-How-to-contribute
There was a problem hiding this comment.
@iluwatar is it fine to attach a link from GeeksForGeeks or any reliable website for the architecture diagram?
There was a problem hiding this comment.
I would prefer own production. You can also leave it out for now. I've used https://whimsical.com/ myself to describe the architectural patterns.
| /** | ||
| * Main class for the cart service. | ||
| * Initializes the shopping channel and the cart service. | ||
| * | ||
| * @author CoderSleek | ||
| * @version 1.0 | ||
| */ |
There was a problem hiding this comment.
Here, above the class, please explain the pattern briefly and describe how the example implements it
| ManagedChannel productChannel = ManagedChannelBuilder | ||
| .forAddress(HOST, SERVER_PORT) | ||
| .usePlaintext() | ||
| .enableRetry() | ||
| .keepAliveTime(10, TimeUnit.SECONDS) | ||
| .build(); | ||
|
|
||
| ShoppingServiceBlockingStub blockingStub = ShoppingServiceGrpc.newBlockingStub(productChannel); | ||
| log.info("cart-service started"); | ||
|
|
||
| var cartService = new CartServiceImpl(blockingStub); | ||
| cartService.getAllProducts(); | ||
|
|
||
| var productInCart = cartService.getRandomProductFromCart(); | ||
| productInCart.setQuantityToReduce(10); | ||
|
|
||
| cartService.reduceCartQuantityFromProduct(productInCart); | ||
| productChannel.shutdown(); | ||
| log.info("cart-service execution successful, shutting down"); |
There was a problem hiding this comment.
Add comments. Remember, this is material for studying the design pattern.
|
Closed due to inactivity. Thank you for the contribution. |




Fixes #2680