Hazelcast, пустое значение urn в задании на другом члене - PullRequest
0 голосов
/ 29 октября 2018

Я использую Hazelcast IScheduledExecutorService и отправляю задачу на этом IScheduledExecutorService с одного узла, который затем будет распределен и выполнен на другом элементе кластера.

Узел-1: созданная задача (вызываемая) и отправленная в IScheduledExecutorService. Узел-1: в то время как задача sumbmiting берет будущее и генерирует урну обработчика (future.getHandler (). ToUrn ()) и устанавливает строку urn в задачу.

Теперь, когда задание запланировано на узле, отличном от 1, я пытаюсь получить значение urn, и оно дает значение как нулевое, хотя оно было задано в задаче.

Почему urn стал нулевым в задаче, когда задача выполняется из другого члена кластера?

1 Ответ

0 голосов
/ 29 октября 2018

URN используется для построения ScheduledTaskHandler снова, если вам понадобится будущий экземпляр позже. Смотрите пример ниже:

HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance();
IScheduledExecutorService executorService = hazelcast.getScheduledExecutorService("myScheduler");

IScheduledFuture<Integer> future = executorService.schedule(
        new ScheduledClusterTask(), 10, TimeUnit.SECONDS);

String urn = future.getHandler().toUrn();
ScheduledTaskHandler handler = ScheduledTaskHandler.of(urn);
IScheduledFuture<Integer> scheduledFuture = executorService.getScheduledFuture(handler);

urn может быть сгенерировано после отправки задачи и может быть сохранено / сохранено для доступа к будущему экземпляру позже.

Если вы задаете URN для экземпляра задачи после отправки задачи, вы не сможете получить его, когда задача выполняется от другого члена кластера. Потому что задача сериализуется и отправляется в кластер во время отправки, а изменения после отправки не отражаются в отправленной задаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...