You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Rich T (Jira)" <ji...@apache.org> on 2023/07/12 19:10:00 UTC
[jira] [Created] (ARTEMIS-4361) MQTT subscription that fails auth leaves behind address and queue
Rich T created ARTEMIS-4361:
-------------------------------
Summary: MQTT subscription that fails auth leaves behind address and queue
Key: ARTEMIS-4361
URL: https://issues.apache.org/jira/browse/ARTEMIS-4361
Project: ActiveMQ Artemis
Issue Type: Bug
Components: MQTT
Affects Versions: 2.26.0
Reporter: Rich T
When an MQTT client tries to create a subscription that is rejected due to auth failure an address and queue are created and left behind.
For example client ID `client1` subscribes to `#` then the `#` address is created with a `client1.#` queue; this queue will quickly fill up with messages (as it captures all messages).
`MQTTSubscriptionManager::addSubscription()` creates the queue for the subscription but `createConsumerForSubscriptionQueue()` call throws an `ActiveMQSecurityException` when auth rejected; the created queue is not then cleaned up.
I am hoping I can use a wildcard address settings via config to cleanup these created queues; I'm using embedded instance so something like:
{code:java}
config.addAddressSetting(wildcardConfiguration.getAnyWordsString(),
new AddressSettings()
.setAutoDeleteCreatedQueues(true)
.setAutoDeleteAddressesDelay(0)
.setAutoDeleteQueuesMessageCount(-1L)
);{code}
But this does not seem like good default behaviour as these leaked queues can quickly fill up with messages
--
This message was sent by Atlassian Jira
(v8.20.10#820010)