27 lines
2.1 KiB
Plaintext
27 lines
2.1 KiB
Plaintext
= Detecting Slow Consumers
|
|
:idprefix:
|
|
:idseparator: -
|
|
|
|
In this section we will discuss how Apache ActiveMQ Artemis can be configured to deal with slow consumers.
|
|
A slow consumer with a server-side queue (e.g. JMS topic subscriber) can pose a significant problem for broker performance.
|
|
If messages build up in the consumer's server-side queue then memory will begin filling up and the broker may enter paging mode which would impact performance negatively.
|
|
However, criteria can be set so that consumers which don't acknowledge messages quickly enough can potentially be disconnected from the broker, which in the case of a non-durable JMS subscriber, would allow the broker to remove the subscription and all of its messages freeing up valuable server resources.
|
|
|
|
== Required Configuration
|
|
|
|
By default the server will not detect slow consumers.
|
|
If slow consumer detection is desired then see xref:address-model.adoc#address-model[address model chapter] for more details on the required address settings.
|
|
|
|
The calculation to determine whether or not a consumer is slow only inspects the number of messages a particular consumer has _acknowledged_.
|
|
It doesn't take into account whether or not flow control has been enabled on the consumer, whether or not the consumer is streaming a large message, etc.
|
|
Keep this in mind when configuring slow consumer detection.
|
|
|
|
Please note that slow consumer checks are performed using the scheduled thread pool and that each queue on the broker with slow consumer detection enabled will cause a new entry in the internal `java.util.concurrent.ScheduledThreadPoolExecutor` instance.
|
|
If there are a high number of queues and the `slow-consumer-check-period` is relatively low then there may be delays in executing some of the checks.
|
|
However, this will not impact the accuracy of the calculations used by the detection algorithm.
|
|
See xref:thread-pooling.adoc#thread-management[thread pooling] for more details about this pool.
|
|
|
|
== Example
|
|
|
|
See the xref:examples.adoc#slow-consumer[slow consumer example] which shows how to detect a slow consumer with Apache ActiveMQ Artemis.
|