[
https://issues.apache.org/jira/browse/CAMEL-26361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ramu reassigned CAMEL-26361:
----------------------------
Assignee: Ramu
> camel-azure-servicebus - renew the session lock for session-enabled consumers
> with async routes
> -----------------------------------------------------------------------------------------------
>
> Key: CAMEL-26361
> URL: https://issues.apache.org/jira/browse/CAMEL-26361
> Project: Camel
> Issue Type: Bug
> Components: camel-azure-servicebus
> Reporter: Claus Ibsen
> Assignee: Ramu
> Priority: Major
> Fix For: 4.24.0
>
>
> CAMEL-23937 added Camel-managed lock renewal for the Service Bus consumer in
> {{PEEK_LOCK}} mode. The Azure SDK's own renewal is tied to the
> {{processMessage}} callback, which returns at once for an async route, so
> {{maxAutoLockRenewDuration}} had no effect there.
> That fix covers only consumers without sessions. In
> {{ServiceBusConsumer.doStart()}}, the {{LockRenewer}} is set up only when
> {{!getConfiguration().isSessionEnabled()}}. With {{sessionEnabled=true}}, a
> route that processes messages asynchronously can still lose the lock before
> it completes or abandons the message, so the message is delivered again.
> Session-enabled queues and subscriptions lock the session, not the single
> message, so the existing {{renewMessageLock()}} does not apply. Renewal needs
> {{renewSessionLock()}} on a client bound to the session.
> h3. Proposal
> * Extend the {{LockRenewer}} (or add a session variant) to renew the session
> lock of each session that has an exchange in flight, until
> {{maxAutoLockRenewDuration}} is reached or the last exchange of that session
> completes.
> * Use a receiver bound to the session that delivered the message, created
> through {{ServiceBusClientFactory}} like the existing renewal client.
> * Keep the current behaviour when the user supplies their own
> {{processorClient}}.
> h3. Tests
> A session-enabled consumer with an async route that takes longer than the
> lock duration: the message is completed once and not redelivered. A unit test
> for the renewer with a mocked client.
> _Filed by Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)