Queue: It's a Noun... It's a Verb... It's Both (2 of 2)
Queue as a noun, represents a list of objects, commands, etc., stored in a retrievable, definite order in the order of insertion.
Queue as a verb, represents an operation to (re)arrange items from the set of operations such as dequeue, browse, replicate, empty, etc available on a queue.
Solace Queues are created and managed by configurations that determine lifecycle characteristics and operational controls. These queue settings determine the behavior of the queue at run-time.
Solace Queues at design-time
The Part (1 of 2) can be found here.
Design Time configurations (Part 2)
Following are some of the configurations that control the runtime functioning of the queue. Solace queues offer numerous nuanced controls that can empower the designers to build systems suited and performant for their specific needs.
6. Message Priority
Enable or disable the respecting of message priority. When enabled, messages contained in the Queue are delivered in priority order, from 9 (highest) to 0 (lowest). MQTT queues do not support enabling message priority.
7. Message Expiry
Message expiry is a timer that dictates the lifespan of the message. The message will persist on an endpoint until that timer expires. Without this timer, a message will persist on a Solace endpoint indefinitely, or until it is consumed by an application or deleted by an administrator.
a) Respect TTL
Enable or disable the respecting of the time-to-live (TTL) for messages in the Queue. When enabled, expired messages are discarded or moved to the DMQ.
b) Maximum TTL (secs)
The maximum time in seconds a message can stay in the Queue when Respect TTL is enabled. A message expires when the lesser of the sender assigned TTL in the message and the Maximum TTL configured for the Queue, is exceeded. A value of 0 disables expiry.
Enable or disable message redelivery. When enabled, the number of redelivery attempts is controlled by maxRedeliveryCount. When disabled, the message will never be delivered from the queue more than once.
d) Maximum Redelivery count
The maximum number of message redelivery attempts that will occur prior to the message being discarded or moved to the DMQ.
8. Dead Message Queue
Messages are removed from a durable endpoint's message spool and discarded when the number of redelivery attempts for a message exceeds the Max Redelivery value for the original destination endpoint; or a message’s TTL value has been exceeded, and the endpoint is configured to respect message TTL expiry times.
If you want the discarded messages to be captured, create a queue and assign that queue as dead message queue (DMQ) assigned to the endpoint.
a) DMQ Name
The name of the Dead Message Queue (DMQ) used by the Queue. Note that the queue must be created and exist at the time of client activity.
9. Congestion Control
a) Reject Messages to Sender on Discard
Determines when to return negative acknowledgments (NACKs) to sending clients on message discards. Note that NACKs cause the message to not be delivered to any destination and Transacted Session commits to fail.
Always: Always return a negative acknowledgment (NACK) to the sending client on message discard.
When Queue Enabled: Only return a negative acknowledgment (NACK) to the sending client on message discard when the Queue is enabled.
Never: Never return a negative acknowledgment (NACK) to the sending client on message discard.
b) Reject Low Priority Messages
Enable or disable the checking of low priority messages against the Reject Low Priority Messages Limit. When enabled, the Reject Messages to Sender on Discard option must have a value of "When Queue Enabled" or "Always" so that session events are sent to the sending clients whenever messages are not enqueued and are discarded. Before enabling it is recommended that the Reject Low Priority Messages Limit have a non-zero value to avoid inadvertently discarding all low priority messages.
c) Reject Low Priority Messages Limit
The number of messages of any priority in the Queue above which low priority messages are not admitted but higher priority messages are allowed. To avoid inadvertently discarding all low priority messages, before enabling Reject Low Priority Messages it is recommended that you change the default value of 0 to a value more appropriate for your network.
d) Priority Messages Limit Alert Thresholds
The thresholds for the maximum allowed number of any priority messages queued in the Queue alert, relative to Reject Low Priority Messages Limit.
10. Disaster Recovery
a) Consumer Acknowledgement Propagation
Enable or disable the propagation of consumer acknowledgments (ACKs) received on the active replication Message VPN to the standby replication Message VPN.