Единица работы будет по запросу или короче.(Продолжительность жизненного цикла). Длительный контекст / передача приведет к использованию памяти и проблемам с производительностью.
Если это процесс, во время которого страница активна, пользователь выбирает записи, с которыми нужно работать на более позднем этапетогда в этом сеансе я бы рассмотрел отслеживание выбранных идентификаторов и применимых модификаций на стороне клиента, которые должны быть предоставлены этапу «act» при запуске, или запись простой пакетной записи в состоянии сеанса сервера или в DB для привязки выбранных / измененных объектов.При сохранении в БД должна быть дата-время, связанное с записью, и автоматический процесс для очистки любых необработанных пакетов, которые не были завершены.(пользователь может отказаться, закрыв браузер, например.)
Если бы это был случай, когда нужно объединить записи по многим запросам, например, объединить веб-запросы в группы <= 1000 или запустить процесс каждый разЧерез час я бы использовал постоянную структуру данных, в которой запросы передают данные в структуру пакета, сгруппированную по записи запуска пакета, которая отслеживает текущее состояние пакета.1. Проверьте текущее состояние партии. 2. Если открыто, добавьте / свяжите запись с текущей партией.3. При закрытии / обработке создайте новую партию и свяжите запись с новой партией. </p>
Взаимодействия с партией должны быть пессимистически блокированными, чтобы фоновый процесс не начинал обработку партии во время записи запросов.
Фоновый пакетный процесс запрашивает пакет, чтобы найти пакет, который он должен начать обрабатывать, обновляет статус, обрабатывает и завершает пакет.