Hazelcast - Как полностью удалить IQueue из Hazelcast во время члена в режиме работы - PullRequest
0 голосов
/ 20 апреля 2020

В настоящее время у меня есть очередь, добавленная к члену Hazelcast во время выполнения, следующим образом.

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

Теперь, после добавления очереди, я могу отправить sh элементы в очередь из клиента и в моем потребительском приложении. Я могу потреблять все предметы. Я хотел удалить всю QueueConfig (учитывая, что очередь не будет доступна ни для одного участника) после завершения моих задач.

Я попытался следующим образом, но это выдает UnsupportedExeption из Hazelcast. hazelcastInstance.getConfig().getQueueConfigs().remove(key) Может ли кто-нибудь дать подсказку или способ удалить Iqueue из экземпляра Hazelcast? Я действительно ищу решение и ценю любую помощь здесь.

1 Ответ

1 голос
/ 21 апреля 2020

Hazelcast Client поддерживает только переопределение или добавление новых конфигураций на стороне клиента. Вы можете взглянуть на исходный код здесь https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/client/impl/clientside/ClientDynamicClusterConfig.java#L501, который не поддерживается на стороне клиента.

Чтобы очистить неиспользуемые или пустые очереди через определенный промежуток времени, используйте элемент empty-queue-ttl. (programmati c way-> queueConfig.setEmptyQueueTtl(TTL))

При вышеупомянутой конфигурации TTL Hazelcast автоматически удаляет пустые очереди после истечения TTL. Надеюсь, это поможет.

Другое решение - создание новой очереди с вашими новыми конфигами, если это необходимо после выполнения задач в очереди.

...