22 private function __construct()
24 $this->queueService = ServiceLocator::getInstance()->get(
'socialnetwork.onboarding.queue.service');
25 $this->queueProvider = ServiceLocator::getInstance()->get(
'socialnetwork.onboarding.queue.provider');
27 $this->batchJobExecutor = ServiceLocator::getInstance()->get(
'socialnetwork.onboarding.batch.job.executor');
37 return (
new self())->run();
40 private function run(): string
42 $jobs = $this->queueProvider->getAll();
44 $this->processImmediately($jobs->getImmediatelyExecuted());
45 $this->processNotImmediately($jobs->getNotImmediatelyExecuted());
50 private function processImmediately(JobCollection $jobs): void
52 $this->processJobs($jobs,
true);
55 private function processNotImmediately(JobCollection $jobs): void
57 $this->processJobs($jobs,
false);
60 private function processJobs(JobCollection $jobs,
bool $immediate): void
67 $jobIds = $jobs->getIdList();
68 $this->queueService->markAsProcessing(...$jobIds);
70 $result = $this->batchJobExecutor->execute($jobs);
71 $completedJobs =
$result->getCompletedJobs();
72 $notCompletedJobs =
$result->getNotCompletedJobs();
74 $this->queueService->deleteByJobIds(...$completedJobs->getIdList());
75 $this->queueService->unmarkAsProcessing(...$notCompletedJobs->getIdList());
79 $cache = JobCacheProxy::getInstance();
83 $cache->cleanByJobCollection($completedJobs->sortByUserId());
84 $cache->save($notCompletedJobs->sortByUserId());
88 Logger::log($t,
'SOCIALNETWORK_COLLAB_ONBOARDING_CACHE');
95 return '\\' . self::class .
'::execute();';