Our project recently upgraded from Spring Integration 4.0.6 to 4.3.16 as part of a larger dependency upgrade release and encountered major performance issues with our publish-subscribe-channel while using a JMS inbound-gateway.
Our publish-subscribe-channel calls 2 service activators, one to send an acknowledgement and another to perform some long running processing. Prior to the upgrade, they were being processed asynchronously and the acknowledgement was being sent out immediately. After the upgrade, the acknowledgement was not being sent until the processing of the second service activator completed.
After combing through the various Spring Integration Migration Guides and other Spring documentation, I found this note in the Spring JMS documentation (https://docs.spring.io/spring-integration/reference/html/jms.html): "Starting with version 4.2, the default acknowledge mode is transacted, unless an external container is provided, in which case the container should be configured as needed. It is recommended to use transacted with the DefaultMessageListenerContainer to avoid message loss.".
By changing the acknowledge mode back to auto, our performance issue was resolved. It seems that the best practice is to use a task executor; however, this change was deemed too intrusive for our release.
I think this information would be a valuable addition to the Spring Integration 4.1 to 4.2 Migration Guide.