Класс JobsContainer
представляет собой контейнер для управления заданиями (jobs) в рамках конкретного коннектора. Он предоставляет методы для добавления, удаления и отмены заданий, а также для корректного завершения всех заданий коннектора.
- JobsContainer(config: MlpServiceConfig, context: MlpExecutionContext): Создает новый экземпляр контейнера заданий с указанными конфигурационными параметрами и контекстом выполнения.
-
put(connectorId: Long, requestId: Long, job: Job): Boolean: Добавляет задание с указанным идентификатором коннектора и запроса. Возвращает
true
, если задание было успешно добавлено, иfalse
, если контейнер не может обрабатывать новые задания. -
remove(connectorId: Long, requestId: Long): Удаляет задание с указанным идентификатором коннектора и запроса из контейнера.
-
cancel(connectorId: Long): Отменяет все задания для указанного коннектора.
-
cancelAll(): Отменяет все задания для всех коннекторов.
-
gracefulShutdownByConnector(connectorId: Long): Осуществляет корректное завершение всех заданий для указанного коннектора.
-
enableNewOnes(connectorId: Long): Включает возможность обработки новых заданий для указанного коннектора.
- ConnectorContainer: Структура данных, содержащая карту запросов и флаг, указывающий на возможность обработки новых заданий коннектором.
// Создание контейнера заданий с указанной конфигурацией и контекстом выполнения
val jobsContainer = JobsContainer(config, context)
// Добавление задания
val job = launch {
// Тело задания
}
val added = jobsContainer.put(connectorId, requestId, job)
// Удаление задания
jobsContainer.remove(connectorId, requestId)
// Отмена всех заданий для конкретного коннектора
jobsContainer.cancel(connectorId)
// Отмена всех заданий для всех коннекторов
jobsContainer.cancelAll()
// Корректное завершение всех заданий для конкретного коннектора
jobsContainer.gracefulShutdownByConnector(connectorId)
// Включение возможности обработки новых заданий для конкретного коннектора
jobsContainer.enableNewOnes(connectorId)
Класс JobsContainer
предоставляет механизм для управления заданиями в многопоточной среде, обеспечивая контроль за их добавлением, удалением и завершением. Он особенно полезен при разработке приложений, требующих параллельной обработки запросов или задач.