Solace Queues Test
A queue is defined as a storage area where a message is stored until it is consumed by an application, or it expires. A queue provides the guarantee that the message will never be lost even if the consuming application is unavailable or if the message broker crashes. A queue is an endpoint configured with topic subscriptions that clients can publish messages to and consume messages from. Queues can subscribe to more than one topic and receive messages for all topics matching their subscriptions. Queues can provide exclusive access to one consumer or access to multiple consumers where messages are distributed among the consumers. The queue acts as both a destination that clients can publish messages to and as an endpoint that clients can bind consumers to and consume messages from.
The lifecycle of a queue on Solace PubSub+ Event Broker is as follows:
-
Producers send guaranteed messages to the event broker.
-
The messages are saved in the queue and delivered to consuming clients if they are online and connected or help in the queue until the consumer connects.
-
The consumer acknowledges the message once it has completed processing it
-
The event broker removes the message from the queue.
If the messages from the queues are not consumed by the consumers or if the queues fail to send the messages to the consumers or if expired messages are retained in the queues, then, the queues will be unable to cater to the needs of the consumers i.e., cater the right message to the right consumer. This issue if prolonged will affect the experience of the consumers accessing the queues. Also, too many expired messages in a queue can cause message replay failures and message flow bind failures. This in turn can slow down message processing. To avoid this, administrators should track the length of each queue, promptly identify the queues that are consistently growing in length, and rapidly initiate measures to optimize the queues. The Solace Queues test helps administrators with all of the above!
This test auto-discovers the queues on each Message VPN on the target Solace PubSub+ Event broker. For each queue, the test reports the access type, status of the queue, the consumers accessing the queue and the count of incoming/outgoing messages. This precisely pinpoints queues that are growing in length at an alarming rate. Additionally, this test pinpoints administrators to the queues that are frequently encountering message replay failures and message flow bind failures.
Target of the test : A Solace PubSub+ Event Broker
Agent deploying the test : A remote agent
Outputs of the test : One set of results for each Message VPN:Queue on the target Solace PubSub+ Event Broker being monitored
Parameter | Description |
---|---|
Test Period |
How often should the test be executed. |
Host |
The IP address of the target host for which this test is to be configured. |
Port |
Refers to the port at which the Solace PubSub+ Event Broker listens to. |
UserName and Password |
By default, the eG agent executes SEMP ( Solace Element Management Protocol) APIs on the target broker to collect the required metrics. For the eG agent to execute the SEMP APIs, a special user with read only privilege is required. Specify the credentials of such a user in the UserName and Password text boxes. To know how to create such a user, refer to Creating a New User for Monitoring Solace PubSub+ Event Broker. |
Confirm Password |
Confirm the Password by retyping it in the Confirm Password text box. |
SSL |
By default, this flag is set to No indicating that the Solace PubSub+ Event Broker is not SSL-enabled by default. Set this flag to Yes if the Solace PubSub+ Event Broker is SSL-enabled. |
Detailed Diagnosis |
To make diagnosis more efficient and accurate, the eG Enterprise embeds an optional detailed diagnostic capability. With this capability, the eG agents can be configured to run detailed, more elaborate tests as and when specific problems are detected. To enable the detailed diagnosis capability of this test for a particular server, choose the On option. To disable the capability, click on the Off option. The option to selectively enable/disable the detailed diagnosis capability will be available only if the following conditions are fulfilled:
|
Measurement | Description | Measurement Unit | Interpretation | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Incoming |
Indicates whether/not ingress flow control is enabled on this queue. |
|
A queue supports both receipts of incoming messages and retrieval of queued messages. Flow control parameters allow you to enable or disable queueing or dequeuing of messages from the queue. This is useful to control the flow for diagnostic or operational purposes in runtime without disrupting the entire ecosystem. The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate whether/not ingress flow control is enabled in this queue. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Outgoing |
Indicates whether/not egress flow control is enabled on this queue. |
|
The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate whether/not egress flow control is enabled in this queue. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Access type |
Indicates the access type of this queue. |
|
A queue has an access type, which determines how messages are delivered when multiple consumer flows are bound to it. Queues can be assigned one of the following access types:
The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate the access type of the queue. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Consumers with selectors |
Indicates whether/not this queue is bound to consumers with selectors. |
|
A selector can be set on a Flow that binds to either a Queue or a Topic Endpoint. Selectors act as egress filters on Queues. When a Flow binds to an exclusive Queue, the selector defined for the Flow filters the messages to be consumed by the client. Non-selected messages remain in the Queue and can be consumed by clients on subsequent Flows with different selectors that might bind. When a Flow binds to a non-exclusive Queue, messages are consumed by bound clients in a round-robin fashion according to their selectors. Once a message is consumed, it is no longer available for subsequent clients. The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate whether/not each queue is bound to consumers with selectors. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Primary or backup |
Indicates whether this queue belongs to the primary event broker or backup event broker. |
|
The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate whether the queue belongs to the primary event broker or backup event broker. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Durable |
Indicates whether/not this queue is durable. |
|
The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate whether/not this queue is durable. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Priority |
Indicates whether/not message priority is enabled for this queue. |
|
Message queues and topic endpoints can optionally support priority message delivery. When you enable an endpoint to respect message priority, the priority field in messages from publishers are respected for all guaranteed and promoted direct messages. That means, the queue or topic endpoint delivers queued messages in priority order; thus all messages of a higher priority are delivered before any messages of a lower priority. The values reported by this measure and its numeric equivalents are mentioned in the table below:
Note: By default, this measure reports the Measure Values listed in the table above to indicate whether/not message priority is enabled for this queue. The graph of this measure however, is represented using the numeric equivalents only i.e., 0 to 2. |
||||||||
Topic subscriptions |
Indicates the total number of topic subscriptions in this queue. |
Number |
|
||||||||
High watermark |
Indicates the amount of data held in this queue. |
MB |
|
||||||||
Messages queued |
Indicates the number of messages that were queued in this queue. |
Messages |
The value of this measure indicates the current queue length. Ideally, the value of this measure should be small for any queue. This is because, short queues are the fastest. When a queue is empty, and it has consumers ready to receive messages, then as soon as a message is received by the queue, it goes straight out to the consumer. Many messages in a queue can put a heavy load on RAM usage. Queue size can also be limited using a Time-To-Live (TTL) extension. |
||||||||
|
Indicates the amount of message data stored in this queue. |
MB |
|
||||||||
Messages queued quota |
Indicates the capacity allocated to store message data in this queue. |
MB |
The queue capacity (queue depth) is directly proportional to the allocated storage (spool size). A value of 0 can accomplish something unique with the spooling of only the LAST received message. |
||||||||
Queue utilization |
Indicates the percentage utilization of this queue. |
Percent |
A value close to 100 indicates that the queue is being utilized by most of the consumers. Compare the value of this measure across queues to identify the queue that is most/least utilized. |
||||||||
Consumers |
Indicates the number of consumers bound to this queue. |
Number |
The detailed diagnosis of this measure lists the name of the client/consumer bound to the queue, the IP address of the client and the host name of the client. |
||||||||
New consumers |
Indicates the number of new consumers bound to this queue during the last measurement period. |
Number |
The detailed diagnosis of this measure lists the name of the client/consumer who is newly bound to this queue, the IP address of the client and the host name of the client. |
||||||||
Disconnected consumers |
Indicates the number of consumers disconnected from this queue. |
Number |
Compare the value of this measure across queues to identify the queue from which maximum number of consumers were disconnected. The detailed diagnosis of this measure lists the name of the client/consumer disconnected from the queue, the IP address of the client and the host name of the client. |
||||||||
Maximum consumer count |
Indicates the maximum number of consumers that can be bound to this queue. |
Number |
|
||||||||
Consumer utilization |
Indicates the percentage of consumers utilizing this queue. |
Percent |
Compare the value of this measure across queues to figure out the queue that is utilized to the maximum by the consumers. |
||||||||
Unacknowledged messages sent |
Indicates the number of messages that were sent from this queue and remained unacknowledged during the last measurement period. |
Number |
|
||||||||
Acknowledgments in progress |
Indicates the number of messages for which acknowledgments are in progress in this queue. |
Number |
|
||||||||
Time since the earliest message has been queued |
Indicates the time that had elapsed since the earliest message was queued in this queue. |
YMDHMS |
|
||||||||
Current incoming rate |
Indicates the rate at which incoming message data was received by this queue. |
Mbps |
Compare the value of this measure across queues to figure out the queue that is receiving maximum amount of incoming message data per second. |
||||||||
Current incoming messages rate |
Indicates the rate incoming messages were received by this queue. |
Messages/sec |
Compare the value of this measure across queues to figure out the queue that is receiving maximum number of incoming messages per second. |
||||||||
Current outgoing rate |
Indicates the rate at which outgoing message data was sent from this queue. |
Mbps |
Compare the value of this measure across queues to figure out the queue that is sending maximum amount of outgoing message data per second. |
||||||||
Current outgoing messages rate |
Indicates the rate at which outgoing messages were sent from this queue. |
Messages/sec |
Compare the value of this measure across queues to figure out the queue that is sending maximum number of outgoing messages per second. |
||||||||
Avg incoming rate |
Indicates the average rate at which incoming message data was received by this queue. |
Mbps |
|
||||||||
Avg incoming messages rate |
Indicates the average rate at which incoming messages were received by this queue. |
Messages/sec |
|
||||||||
Avg outgoing rate |
Indicates the average rate at which outgoing messages were sent from this queue. |
Mbps |
|
||||||||
Avg outgoing messages rate |
Indicates the average rate at which outgoing messages were sent from this queue. |
Messages/sec |
|
||||||||
Acknowledgement propagation messages sent |
Indicates the number of consumer propagation of acknowledgments sent from this queue during the last measurement period. |
Number |
|
||||||||
Acknowledgement propagation messages received |
Indicates the number of consumer propagation of acknowledgments received by this queue during the last measurement period. |
Number |
|
||||||||
Messages acknowledged via acknowledgement propagation |
Indicates the number of messages that were acknowledged based on the propagation of consumer acknowledgments received by this queue during the last measurement period. |
Number |
|
||||||||
Messages received from active mate |
Indicates the number of messages received by this queue from an Active mate during the last measurement period. |
Number |
|
||||||||
Replays started |
Indicates the number of messages for which message replays were started from this queue during the last measurement period. |
Number |
Message replay allows an event broker to resend messages to new or existing clients that request them, hours or even days after those messages were first received by the event broker. Replay can be performed on a queue or topic endpoint. If you enable message replay, event brokers store guaranteed messages in a replay log. These messages are kept until the log is full, after which the oldest messages are removed to free-up space for new messages. |
||||||||
Replays succeeded |
Indicates the number of messages in this queue for which message replay were successful during the last measurement period. |
Number |
|
||||||||
Replays failed |
Indicates the number of messages in this queue for which message replay failed during the last measurement period. |
Number |
Compare the value of this measure across queues to figure out the queue from which maximum number of message replays failed. |
||||||||
Replayed messages sent |
Indicates the number of messages that were sent to the subscriber from this queue based on a replay request from the subscriber during the last measurement period. |
Number |
|
||||||||
Replayed messages acked |
Indicates the number of messages in this queue that were replayed and acknowledged during the last measurement period. |
Number |
|
||||||||
Bind attempts |
Indicates the number of message flows that attempted to bind to this queue during the last measurement period. |
Number |
|
||||||||
Bind success |
Indicates the number of message flows that were successfully bound to this queue during the last measurement period. |
Number |
A high value is desired for this measure. |
||||||||
Bind failure due to already bound |
Indicates the number of message flow binds that failed since the message flows were already bound to this queue during the last measurement period. |
Number |
Ideally, the value of this measure should be 0. |
||||||||
Bind failure due to queue disabled |
Indicates the number of message flow binds that failed since this queue was disabled during the last measurement period. |
Number |
Ideally, the value of this measure should be 0. |
||||||||
Bind failure due to invalid selectors |
Indicates the number of message flow binds that failed to this queue during the last measurement period since there were invalid selectors. |
Number |
Ideally, the value of this measure should be 0. |
||||||||
Bind failure due to maximum bind count exceeded |
Indicates the number of message flow binds that failed during the last measurement period since the count of maximum number of binds to this queue was exceeded. |
Number |
Ideally, the value of this measure should be 0. |
||||||||
Other bind count failure |
Indicates the message flow binds to this queue that failed due to other reasons during the last measurement period. |
Number |
Ideally, the value of this measure should be 0. |
||||||||
Quota exceeded |
Indicates the number of messages that could not be spooled and were discarded from this queue during the last measurement period because the maximum allowed message spool usage quota was exceeded. |
Number |
|
||||||||
Maximum message size exceeded |
Indicates the number of times maximum message size limit was exceeded in this queue during the last measurement period. |
Number |
|
||||||||
Failure queue disabled |
Indicates the number of messages that could not be spooled because ingress clients were disabled from publishing to this queue during the last measurement period. |
Number |
|
||||||||
Denied by client profile |
Indicates the number of messages that could not be spooled in this queue during the last measurement period because the client profile does not allow the publishing of guaranteed messages. |
Number |
|
||||||||
No local delivery |
Indicates the number of messages that were discarded from this queue during the last measurement period because they were sent to a queue or topic endpoint to which the same client as the message publisher is bound with No Local instruction. |
Number |
|
||||||||
Destination group error |
Indicates the number of guaranteed messages that were discarded from this queue during the last measurement period due to reject-msg-to-sender-on-discard being triggered on a different queue/topic endpoint in the same destination group. |
Number |
The destination group is the set of durable and/or temporary endpoints in the same Message VPN that have “reject-msg-to-sender-on-discard” turned on, as well as a topic subscription matching the topic to which the message is published. |
||||||||
Low priority messages congestion control |
Indicates the number of published low priority messages that were discarded from this queue during the last measurement period. |
Number |
|
||||||||
Messages deleted |
Indicates the number of messages that were deleted from this queue during the last measurement period. |
Number |
|
||||||||
Discarded due to expiry |
Indicates the number of messages that were discarded from this queue based on the Message Expiry timer during the last measurement period. |
Number |
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. |
||||||||
Moved to DMQ due to expiry |
Indicates the number of messages that were moved from this queue to Dead Message queue since the messages expired during the last measurement period. |
Number |
By default, Guaranteed messages are removed from a durable endpoint's message spool and discarded when:
|
||||||||
Attempted move to DMQ due to expiry - failed |
Indicates the number of messages that were attempted to be moved from this queue to Dead Message queue since the messages expired but the attempts failed during the last measurement period. |
Number |
|
||||||||
Discarded due to maximum redeliveries |
Indicates the number of messages that were discarded from this queues since the messages were attempted redelivery for the maximum number of times during the last measurement period. |
Number |
|
||||||||
Moved to DMQ due to maximum redeliveries |
Indicates the number of messages that were moved to Dead Message queue from this queue since the messages were attempted redelivery for the maximum number of times during the last measurement period. |
Number |
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. |
||||||||
Attempted move to DMQ due to maximum redeliveries - failed |
Indicates the number of messages that were attempted to be moved to Dead Message queue from this queue due to maximum number of redeliveries but failed to be moved during the last measurement period. |
Number |
|
||||||||
Discarded due to TTL (hop limit) exceeded |
Indicates the number of messages that were discarded from this queue since the time-to-live in the queue limit was exceeded during the last measurement period. |
Number |
|