Add example demonstrating batch write optimization for streaming calls #12528
+288
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a new example (
BatchWriteOptimizationExample) that demonstrates the batch write optimization pattern for streaming gRPC calls. This example shows that the pull/batch write feature is already implemented and available through theisReady()andsetOnReadyHandler()API.Motivation
Several older issues requested support for batch writes to optimize flushing and reduce buffer allocations when sending many small messages. This example demonstrates that this functionality has been available for years through the manual flow control API.
This example confirms that #454 can be closed, open issues makes visitors confusing.
What This Example Demonstrates
Batch Writing Pattern: Shows how to write multiple messages in a tight loop while
isReady()returnstrue, which naturally batches messages before flushingBackpressure Handling: Demonstrates how
isReady()becomesfalsewhen backpressure occurs, and howsetOnReadyHandler()is called when the transport is ready againPerformance Metrics: Includes counters that show:
Both Client and Server: Shows the pattern on both client-side and server-side streaming
Key Code Pattern
Files Changed
✅ examples/src/main/java/io/grpc/examples/manualflowcontrol/BatchWriteOptimizationExample.java - New example with detailed comments
✅ examples/src/main/java/io/grpc/examples/manualflowcontrol/README.md - Updated with new section
Contribution by Gittensor, learn more at https://gittensor.io/