Существую задачи выполняемые в джобах, на драйвере redis, сейчас они выполняются асинхронно. То есть одна задача которая стоит в очереди последняя, но по времени выполнения она срабатывает быстрее, и собственно выполняется быстрее. Нужно это потому что очень важен порядок выполнения, но и ставить sync драйвер тоже не вариант, так как время выполнения всех задач очень большое.
Мне нужно сохранять сохранять А элементы, которых очень много, и для разгрузки апи с которого берутся данные, я делаю пачки по 50 шт и сохраняю в каждом джобе по 50 штук. Потом запускаются сохранение элементов B которые тоже берутся не все сразу, а пачками, и жлеметы A и B связанны, то есть не получится использовать withChain. Вся проблема в том что обновление всех элементов A и B очень долгое, и моя команда которая отвечает за обновление, попросту делае kill спустя 20 минут выполнения процесса обновления в режиме sync.
Так же допустим после сохранения всех элементов A, то есть после всех джобов с сохранением пачек А, становится единный джоб очисти кеша для A элементов, но так как он опять же, выполняется быстрее всего, то поулчается так что не все элементы А сохранились, а кеш уже очищен
Так же допустим после сохранения всех элементов A, то есть после всех джобов с сохранением пачек А, становится единный джоб очисти кеша для A элементов, но так как он опять же, выполняется быстрее всего, то поулчается так что не все элементы А сохранились, а кеш уже очищен
Вы себе противоречите в описании. Если задача на очистку кеша ставится "после всех джобов с сохранением пачек А", то он не может заверишиться до заверешения сохранения.
Или же вы имеете в виду, что вы ставите задачу на очистку кеша после постановки задач обработки, а не после их выполнения? Так ставьте её после выполнения в конце задачи обработки.
Алексей Уколов, Я беру общее кол-во элементов, апи с которого берутся данные позволяет так сделать, потом в цикле беру с этого апи пачки по 50 штук, и в этом же цикле запускаю джобы, которые в свое время делаю сохранение, и после цикла я ставлю в очередь очистку кеша. То есть вы предлагаете мне отслеживать пока последняя пачка обновится, и там уже ставить джоб на выполнение?
Да. Сделать это можно по разному. Можно банально в кеш записать общее количество обновляемых элементов, а в джобе обновления декрементить его в конце. Если дошли до нуля - ставить задачу на сброс кеша.
Алексей Уколов, Спасибо за предложенные варианты, что нибудь щас буду думать, надеялся что можно будет какой-нибудь настройкой просто сделать синхронное выполнение