user3876801
user3876801

Reputation: 243

Hazelcast - How to completely remove the IQueue from the hazelcast during member at running mode

Currently I have queue added to the Hazelcast member on run time with following way.

QueueConfig queueConfig = new QueueConfig();
queueConfig.setName(task.getKey());
hazelcastInstance.getConfig().addQueueConfig(queueConfig);

Now after adding the queue, I am able to push the items to the queue from client and in my consumer application. I am able to consume all items. I wanted to remove the entire QueueConfig (Considering the queue won't be available in any member) after my tasks are completed.

I tried with follwoing way, but this throws UnsupportedExeption from Hazelcast. hazelcastInstance.getConfig().getQueueConfigs().remove(key) Could anyone provide any hint or way to remove the Iqueue from the Hazelcast instance? I am really looking towards the solution and appreciate any help here.

Upvotes: 0

Views: 844

Answers (1)

İlker Korkut
İlker Korkut

Reputation: 3250

Hazelcast Client only supports overriding or adding new configurations on the client-side. You can take a look at source code here https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/client/impl/clientside/ClientDynamicClusterConfig.java#L501 , which operations doesn't support in client-side.

To purge unused or empty queues after a period of time, use the empty-queue-ttl element. (programmatic way-> queueConfig.setEmptyQueueTtl(TTL))

With above TTL config Hazelcast automatically purge empty queues after TTL expiration. I hope it helps.

Another solution is creating a new queue with your new configs if needed after your tasks in the queue are done.

Upvotes: 1

Related Questions