oscerd commented on code in PR #26779: URL: https://github.com/apache/camel/pull/26779#discussion_r4090410592
########## docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc: ########## @@ -2567,3 +2567,17 @@ Routes that reference the constants (for example `setHeader(MustacheConstants.MU are unaffected. Routes that set the header by its literal string name, or that use `allowTemplateFromHeader=true` with the old header names, must switch to the new `Camel`-prefixed names. + +=== camel-pulsar - a failed exchange is negatively acknowledged + +When a route fails, the consumer now calls `negativeAcknowledge` on the Pulsar consumer instead of +leaving the message unacknowledged. This only applies when `allowManualAcknowledgement` is `false` +(the default); with manual acknowledgement the route stays in charge, as before. + +This changes when the message comes back. Previously it was redelivered once the acknowledgement +timeout expired, which `camel-pulsar` sets to 10 seconds by default through `ackTimeoutMillis`. A +negative acknowledgement removes the message from the client's unacknowledged-message tracker, so +redelivery now follows `negativeAckRedeliveryDelayMicros`, which defaults to 60 seconds, and honours +`negativeAckRedeliveryBackoff` when one is configured. + +A route that wants the previous timing can set `negativeAckRedeliveryDelayMicros=10000000`. Review Comment: Fair point, and I had missed it — the PR body noted the semantic change but the guide did not, and the method is on the public API surface even though the only caller is inside the component. Added in 736f68d: ``` === camel-pulsar - PulsarMessageUtils.updateExchange returns the exchange it was given ``` covering that it now populates and returns the instance it received instead of a copy, why (the copy orphaned the pooled exchange), and that external callers relying on copy semantics must make their own. I put it before the negative-acknowledgement entry rather than at the end of the file: three open PRs each add an entry here, and appending them all guarantees a conflict for whichever merges second. _Claude Code on behalf of oscerd_ -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
