-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SOL-58059 PauseResume #123
SOL-58059 PauseResume #123
Conversation
…han only on deliveryCount
…ause-resume_withOtherFeatures
.../src/main/java/com/solace/spring/cloud/stream/binder/inbound/JCSMPInboundChannelAdapter.java
Show resolved
Hide resolved
...der-core/src/main/java/com/solace/spring/cloud/stream/binder/util/FlowReceiverContainer.java
Outdated
Show resolved
Hide resolved
solace-spring-cloud-starters/solace-spring-cloud-stream-starter/README.adoc
Show resolved
Hide resolved
...d-stream-binder/src/test/java/com/solace/spring/cloud/stream/binder/SolaceBinderBasicIT.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JCSMPInboundChannelAdapter
doesn't persist its paused state between bindings being restarted (STARTED
-> PAUSED
-> STOPPED
-> STARTED
) for async consumers. Polled consumers work fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pausing consumers doesn't work if the FlowReceiverContainer
is unbound when pause is invoked.
To reproduce:
- Start consumer whose message handler just throws an exception.
- Disable queue egress.
- Change binding state to
PAUSED
(can be verified via actuator) - Enable queue egress.
- Notice that actuator reports the binding state as
PAUSED
but the consumer binding is actively consuming messages.
...der-core/src/main/java/com/solace/spring/cloud/stream/binder/util/FlowReceiverContainer.java
Outdated
Show resolved
Hide resolved
...der-core/src/main/java/com/solace/spring/cloud/stream/binder/util/FlowReceiverContainer.java
Outdated
Show resolved
Hide resolved
.../src/main/java/com/solace/spring/cloud/stream/binder/inbound/JCSMPInboundChannelAdapter.java
Outdated
Show resolved
Hide resolved
.../src/main/java/com/solace/spring/cloud/stream/binder/inbound/JCSMPInboundChannelAdapter.java
Outdated
Show resolved
Hide resolved
...der-core/src/main/java/com/solace/spring/cloud/stream/binder/inbound/JCSMPMessageSource.java
Outdated
Show resolved
Hide resolved
...der-core/src/main/java/com/solace/spring/cloud/stream/binder/inbound/JCSMPMessageSource.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@carolmorneau I'm done with the PR fixes. Feel free to retest this when you have time. I can't add you as a reviewer since you were the one who created the PR.
...der-core/src/main/java/com/solace/spring/cloud/stream/binder/inbound/JCSMPMessageSource.java
Show resolved
Hide resolved
Retested polled consumers and async consumers. As part of the retests, confirmed that:
I believe this is ready for merging |
* Add is-reply message header (#97) * Add `solace_isReply` message header * Creating configuration metadata for bindings properties (#98) * Handle consuming null payloads (#112) * Add `solace_scst_nullPayload` message header * Convert incoming null payloads to empty equivalents * add config option to disable adding destination subscription on queue (#108) * add `addDestinationAsSubscriptionToQueue` binding config option * deprecate `isProvisionSubscriptionsToDurableQueue` in favor of `addDestinationAsSubscriptionToQueue` Co-authored-by: Jeffrey D <11084623+Nephery@users.noreply.github.com> * Upgrade to Spring cloud 2021.0.0 and Junit 5 (#118) # Product Changes * Upgrade Spring Boot to `2.6.2` * Upgrade Spring Cloud to `2021.0.0` * Upgrade sol-jcsmp to `10.13.0` # Test Changes * Upgrade sol-jms to `10.13.0` * Upgrade solace-integration-test-support to `0.8.0` * Upgrade all binder tests to JUnit 5 * Add `PubSubPlusExtension` into integration tests for automatic provisioning of PubSub+ in Docker and extension-managed JCSMP resources (e.g. managed `JCSMPSession` and `Queue`). * Docker provisioning is disabled if Spring properties are defined to use an externally provisioned broker. * Usage of Mockito, SoftAssertions, & ExecutorService were updated to use extensions for injection and auto-cleanup (or auto-calling `assertAll()` in the case of SoftAssertions). * Remove Maven `it` profile * Integration tests will always run by default. * Add parallel test execution and enable it by default in **Maven** * Is disabled by default for easy debugging when test are directly ran from an IDE (not through Maven). * Update `Test` Github Action workflow to skip duplicate runs, cache maven dependencies, and report unit test results. * fix PubSubPlusExtension integration (#119) * upgrade solace-integration-test-support to 0.9.0 * fix `SpringCloudStreamExtension` to use static accessors of `PubSubPlusExtension` resources * Replace the use of Pivotal Cloud Foundry by VMware Tanzu in documentation (#114) * SOL-46352: Fix duplicate logs by registering a single RetryListener (#116) * Fix duplicate logs by registering a single RetryListener * Fixes #77 * update sonatype urls to s01 (#121) Co-authored-by: skgaddam <ShivaKumar.Gaddam@solace.com> * Delivery Count (#122) * Add solace_deliveryCount Spring message header * This is a controlled availability feature * upgrade to spring-cloud@2021.0.1 & spring-boot@2.6.4 (#126) * SOL-57956: Removing dependency on spring-cloud-connector (#113) Fixes #15 * Sol 46284 Queue Name Expression (#120) * add config options to change the queue name format: * Add `queueNameExpression` and `errorQueueNameExpression` consumer config options * Add `queueNameExpression` and `queueNameExpressionsForRequiredGroups` producer config options * Deprecate `queueNamePrefix`, `useGroupNameInQueueName`, `useFamiliarityInQueueName`, `useDestinationEncodingInQueueName`, `errorQueueNameOverride`, and `useGroupNameInErrorQueueName` binding config options * Fixes #88 * Sol 58058 health actuator (#125) * Add support for health indicator * Add new `RECONNECTING` health indicator status Co-authored-by: E521877 <nathanael.weber@sbb.ch> Co-authored-by: Jeffrey Douangpaseuth <11084623+Nephery@users.noreply.github.com> * SOL-58059 Consumer Pause/Resume (#123) * Add support for consumer pause/resume Co-authored-by: Jeffrey Douangpaseuth <11084623+Nephery@users.noreply.github.com> * SOL-43137 Batch Consumer Support (#124) * Add support for batch consumers * Add `batchMaxSize` and `batchTimeout` consumer config options * Add `solace_scst_batchedHeaders` message header * closes #22 * SOL-49780: SCSt README Cleanup (#127) * Expand table of contents to 3 levels * Rewrite overview to be more clear * Try to make it more apparent that Solace session configuration is handled by the Solace Java Spring Boot starter (a completely different project) * Remove references to obsolete `prefix` consumer/producer config options. The `prefix` option was removed in `3.0.0`. * prepare for 2.3.0 release (#128) * add dependabot (#130) closes #78 * Upgrade Solace APIs to 10.13.1 & Log4j2 to 2.17.2 (#131) * Upgrade sol-jcsmp to `10.13.1` * Upgrade sol-jms to `10.13.1` * Upgrade Log4j2 to `2.17.2` * upgrade solace-spring-boot to 1.2.0 (#129) * upgrade to solace-spring-boot@1.2.1 & solace-services-info@0.4.4 Co-authored-by: carolmorneau <carol.morneau@solace.com> Co-authored-by: PhilippeKhalife <philippe.khalife@solace.com> Co-authored-by: skgaddam <ShivaKumar.Gaddam@solace.com> Co-authored-by: E521877 <nathanael.weber@sbb.ch>
This implements the Pausable interface much like the older, active PR #57
Please review/merge below PRs before this one as they were merged into this branch to facilitate testing: