groundhog2k opened a new pull request, #9183:
URL: https://github.com/apache/camel/pull/9183

   In a scenario with a high message publishing rate and a full queue the 
publisher will get "nack" (not acknowledged) as feedback from RabbitMQ.
   
   The method Channel#waitForConfirmsOrDie(long) in 
https://github.com/rabbitmq/rabbitmq-java-client/blob/main/src/main/java/com/rabbitmq/client/impl/ChannelN.java#L241
 will close the channel. This closed channel is then given back to the channel 
pool. Next time the channel is taken out of the pool it is detected as closed 
and will be removed. So a new channel needs to be opened and this too will be 
closed directly after usage when the same queue is still full. There will be a 
high rate of opened and closed communication channels and the channel pool gets 
unusable.
   
   This is described as high channel churn 
(https://www.rabbitmq.com/channels.html#high-channel-churn) and can have side 
effects on RabbitMQ (memory and cpu resource usage) and performance too.
   
   It was also discussed with folks from rabbitmq-java-client 
(rabbitmq/rabbitmq-java-client#942) and the usage of 
Channel#waitForConfirmsOrDie(long) is "highly NOT recommended" by them.
   
   This behavior affects ALL versions of the camel-rabbitmq component!
   
   # Description
   
   <!--
   - Write a pull request description that is detailed enough to understand 
what the pull request does, how, and why.
   -->
   
   # Target
   
   - [ ] I checked that the commit is targeting the correct branch (note that 
Camel 3 uses `camel-3.x`, whereas Camel 4 uses the `main` branch)
   
   # Tracking
   - [ ] If this is a large change, bug fix, or code improvement, I checked 
there is a [JIRA issue](https://issues.apache.org/jira/browse/CAMEL) filed for 
the change (usually before you start working on it).
   
   <!--
   # *Note*: trivial changes like, typos, minor documentation fixes and other 
small items do not require a JIRA issue. In this case your pull request should 
address just this issue, without pulling in other changes.
   -->
   
   # Apache Camel coding standards and style
   
   - [ ] I checked that each commit in the pull request has a meaningful 
subject line and body.
   
   <!--  
   If you're unsure, you can format the pull request title like `[CAMEL-XXX] 
Fixes bug in camel-file component`, where you replace `CAMEL-XXX` with the 
appropriate JIRA issue.
   -->
   
   - [ ] I formatted the code using `mvn -Pformat,fastinstall install && mvn 
-Psourcecheck`
   
   <!-- 
   You can run the aforementioned command in your module so that the build 
auto-formats your code and the source check verifies that is complies with our 
coding style. This will also be verified as part of the checks and your PR may 
be rejected if the checkstyle does not pass.
   
   You can learn more about the contribution guidelines at 
https://github.com/apache/camel/blob/main/CONTRIBUTING.md
   -->
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@camel.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to