当前,我已通过以下方式在运行时将队列添加到Hazelcast成员。
QueueConfig queueConfig = new QueueConfig();
queueConfig.setName(task.getKey());
hazelcastInstance.getConfig().addQueueConfig(queueConfig);
现在添加队列后,我可以从客户端和消费者应用程序将项目推送到队列中。我能够消耗所有物品。我想在任务完成后删除整个QueueConfig
(考虑到该队列在任何成员中都将不可用)。
我尝试了以下方式,但这从Hazelcast中抛出UnsupportedExeption
。hazelcastInstance.getConfig().getQueueConfigs().remove(key)
谁能提供任何提示或方式从Hazelcast实例中删除Iqueue
?我真的很期待该解决方案,并感谢在此提供的任何帮助。
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过期后自动清除空队列。希望对您有所帮助。
另一种解决方案是在完成队列中的任务后,根据需要使用新配置创建新队列。