Client Acknowledgement & Unacked messages

petegehrman
petegehrman Member Posts: 43 ✭✭

I have a consumer application using client acknowledgement mode. If the application fails to process the message and therefor does not acknowledge it, will it get redelivered after some time period? If so, what is the delay?

Comments

  • nram
    nram Member, Employee Posts: 80 Solace Employee
    edited March 2021 #2

    Hello @petegehrman, Short answer is No (but pl continue to read :-)). Messages are not redelivered on the application layer. They will be redelivered only if the connection (flow to be exact) is reestablished.

    Now to the long answer .. Solace does redeliver the messages on the transport level. Purpose of this is to ensure that the messages are delivered to the application buffer. From then on, its application's responsibility to process them and ack. Redelivering beyond that point will lead to duplicate messages on the consumer end - which will be in violation of several protocols including JMS.

    When the application flow is reestablished, any unacked messages can be safely redelivered since we know the original flow it was delivered to can no longer ack the message (and lead to potential dup message delivery). This is still subject to other parameters like max-time-to-live, max-redelivery, max-delivered-unacked-msgs, etc.

    Here are some related threads you may find useful :
    https://solace.community/discussion/156/receive-all-unacknowledged-messages-using-the-net-api
    https://solace.community/discussion/301/reprocess-messages-which-are-not-ack-back-by-consumer

  • nram
    nram Member, Employee Posts: 80 Solace Employee

    You got that right @petegehrman