503 Spool Over Quota. Queue or Topic endpoint limit exceeded

barisbt
barisbt Member Posts: 8 ✭✭

Hi Community,

I have q1 and q2 which subscribed to topic t/test/baris

When I publish a message to the topic t/test/baris
if q1 quota is exceeded (even if q2 can receive messages in terms of space), the message is rejected by the broker with the below message and none of the queues receive the message as a result.

I understand that this is by design but what is the reasoning for the broker to reject it as a whole?(all or nothing) or is there a way to allow the "other-no problem queues" to receive the messages without any problem?

Thanks

<solace-error-response>
<code>503</code>
<reason>
<![CDATA[Spool Over Quota. Queue or Topic endpoint limit exceeded]]>
</reason>
<detail>
<![CDATA[
Topic "t/test/baris";
SMF AD control client ack response error
]]>
</detail>
<internal-use>2:14136</internal-use>
</solace-error-response>

Best Answers

  • nicholasdgoodman
    nicholasdgoodman Member, Employee Posts: 43 Solace Employee
    #2 Answer ✓

    Yes - by default when any subscription-matching queue is full, the entire message is rejected back to the sender and the message is not enqueued at all.

    This behavior can be changed on a per-queue basis, specifically via the Queue Settings > Advanced Settings > Congestion Control > Reject Messages to Sender on Discard dropdown, which has three options: When Queue Enabled (default), Always, and Never.

    To allow the broker and other queues to still receive a message when a particular queue is full, you can change this setting to Never.

  • barisbt
    barisbt Member Posts: 8 ✭✭
    #3 Answer ✓

    It looks like my options are different for congestion control. (attached file)

    It worked with "silent" option selected. Thank you for the help / answer Nicholas.


    BTW I am using using Event Broker Service Version10.8.1.140-5) it is in fact SAP Advanced Event Mesh.

Answers

  • nicholasdgoodman
    nicholasdgoodman Member, Employee Posts: 43 Solace Employee
    #4 Answer ✓

    Yes - by default when any subscription-matching queue is full, the entire message is rejected back to the sender and the message is not enqueued at all.

    This behavior can be changed on a per-queue basis, specifically via the Queue Settings > Advanced Settings > Congestion Control > Reject Messages to Sender on Discard dropdown, which has three options: When Queue Enabled (default), Always, and Never.

    To allow the broker and other queues to still receive a message when a particular queue is full, you can change this setting to Never.

  • barisbt
    barisbt Member Posts: 8 ✭✭
    #5 Answer ✓

    It looks like my options are different for congestion control. (attached file)

    It worked with "silent" option selected. Thank you for the help / answer Nicholas.


    BTW I am using using Event Broker Service Version10.8.1.140-5) it is in fact SAP Advanced Event Mesh.

  • Aaron
    Aaron Member, Administrator, Moderator, Employee Posts: 595 admin
    edited September 6 #6

    Interesting… I didn't know that even some of the terminology in Manager is remapped when deployed as SAP AEM. EDIT: it looks like the term "Silent" was added to more recent Solace brokers as well… I guess Nick and I are a bit out of date!

    Yeah, "Silent" will make your q1 queue into essentially a "best effort" queue, and that it will be fully Guaranteed with ACKs and everything until it is full, and then it'll just lose new messages while its spool is over quota.

  • barisbt
    barisbt Member Posts: 8 ✭✭

    Thanks for the explanation Aaron. Yes it should be broker version that makes this difference.

    Baris