🎄 Happy Holidays! 🥳

Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.

Happy Holidays!

Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.

Solace/Boomi moves all messages to DMQ if a single message fails after x retries

sjaak
sjaak Member Posts: 109 ✭✭✭

It appears that our Solace test instance moves all messages to the DMQ if a single message fails after x retries. Example:

Queue X contains 100 messages
Queue X settings: retries = 3
Boomi listener retrieves 1 message from the queue, which fails. Then Boomi retries the messages 3 times (OK), but then Solace moves all 100 messages to the DMQ. We have been able to reproduce the issue multiple times.

Are there any settings that cause this behavior? What's going on here?

Sjaak

Best Answer

  • sjaak
    sjaak Member Posts: 109 ✭✭✭
    #2 Answer ✓

    Solace support has solved the issue. It appears that the queue setting "Maximum Delivered Unacknowledged Messages per Flow" is causing the issue. The default value is 10.000. You need to set it to 1, and then it works fine.

Answers

  • amackenzie
    amackenzie Member, Employee Posts: 269 Solace Employee
    edited August 2021 #3

    Is your batch size set to 100? (or > 100 given that you only have 100 messages)

    edit - strike that. It actually has nothing to do with the listener batch size. It has to do with the receiver and an internal buffer. When the message comes to the client (the listener in this case), it buffers up n amount of messages and when a message is rejected (unbind/rebind in the client API), it has no choice but to mark ALL the messages in the buffer with incrementing delivery count because it HAS been delivered to the client, but not yet processed. So all 100 messages are getting delivery count incremented and will hit the max retries and end up in the DMQ.

    I am looking at what you can tweak to minimize this buffer.

  • sjaak
    sjaak Member Posts: 109 ✭✭✭

    I follow your analysis if our batch size would be 100 or more. But, the Boomi batch size is 1, as well as the maximum number of concurrent listeners. The client (=Boomi), therefore, should only buffer one message. And move that message to the DMQ in case the last retry fails. Then, it should start processing the following message, including retries.

  • sjaak
    sjaak Member Posts: 109 ✭✭✭
    #5 Answer ✓

    Solace support has solved the issue. It appears that the queue setting "Maximum Delivered Unacknowledged Messages per Flow" is causing the issue. The default value is 10.000. You need to set it to 1, and then it works fine.