[improve][java-client] check consumer pause status before consumer receive/batchReceive #17182
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.
Motivation
*consumer client has method pause(), but consumer is not really paused. paused consumer only stop send flow permit request to broker but broker still can push messages to consumer if there is already existed flow permit. consumer can get messages if it invoked consumer.receive(). This may mislead users since no message is expected after pause. *
Modifications
park for some time if consumer is paused. consumer hold prefetched messages in client cache.
Verifying this change
This change added tests and can be verified as follows:
(example:)
Does this pull request potentially affect one of the following parts:
If
yes
was chosen, please highlight the changesDocumentation
Check the box below or label this PR directly.
Need to update docs?
doc-required
(Your PR needs to update docs and you will update later)
[ x]
doc-not-needed
(already documented)
doc
(Your PR contains doc changes)
doc-complete
(Docs have been already added)