503 Spool Over Quota. Queue or Topic endpoint limit exceeded
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
-
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.
0 -
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.0
Answers
-
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.
0 -
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.0 -
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.0