Hazelcast-如何在成员处于运行模式期间从hazelcast中完全删除IQueue

问题描述 投票:0回答:1

当前,我已通过以下方式在运行时将队列添加到Hazelcast成员。

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

现在添加队列后,我可以从客户端和消费者应用程序将项目推送到队列中。我能够消耗所有物品。我想在任务完成后删除整个QueueConfig(考虑到该队列在任何成员中都将不可用)。

我尝试了以下方式,但这从Hazelcast中抛出UnsupportedExeptionhazelcastInstance.getConfig().getQueueConfigs().remove(key)谁能提供任何提示或方式从Hazelcast实例中删除Iqueue?我真的很期待该解决方案,并感谢在此提供的任何帮助。

java hazelcast
1个回答
0
投票

Hazelcast Client仅支持在客户端上覆盖或添加新配置。您可以在https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/client/impl/clientside/ClientDynamicClusterConfig.java#L501处查看源代码,客户端不支持该操作。

要在一段时间后清除未使用或空的队列,请使用empty-queue-ttl元素。 (以编程方式-> queueConfig.setEmptyQueueTtl(TTL)

使用上述TTL配置,Hazelcast会在TTL过期后自动清除空队列。希望对您有所帮助。

另一种解决方案是在完成队列中的任务后,根据需要使用新配置创建新队列。

© www.soinside.com 2019 - 2024. All rights reserved.