Микросервис scheduler

В этой статье вы узнаете о назначении, логике работы, конфигурации и методах микросервиса scheduler.

Микросервис scheduler служит для управления (создания, изменения и удаления) запланированными задачами.

Доступ к сервису предоставляется по запросу.

Логика работы Copy-icon

В работе микросервиса используются сущности:

  • ScheduledJobDto - содержит информацию о запланированной задаче (идентификатор, описание, триггер, данные),
  • ScheduledJobDataDto - содержит информацию о данных, необходимых для выполнения запланированной задачи (тип задачи, URL, метод, параметры запроса, тело запроса, заголовки),
  • ScheduledJobTriggerDto - содержит информацию о том, когда и как должна быть выполнена запланированная задача (тип триггера, Cron-выражение, время запуска задачи, промежуток времени в секундах, через который следует повторно запускать задачу).

Аутентификация Copy-icon

При обращении к сервису аутентификация не нужна.

Service context path Copy-icon

/api/scheduler/

Настройки и параметры конфигурации Copy-icon

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "DB_HOST": "хост для подключения к БД",
    "DB_PASSWORD": "пароль для обычного пользователя БД",
    "DB_PASSWORD_MIGRATION": "пароль пользователя, выполняющего миграцию"

  }
}

Copy-icon
Указываемые на каждом отдельном стенде

{
  "env": {
    "DB_DATABASE": "ecom-${APP_NAME}-${STAND_NAME}",
    "DB_USER": "ecom-${APP_NAME}-user",
    "DB_USER_MIGRATION": "ecom-${APP_NAME}-migration"
  }
}

Copy-icon

Методы микросервиса Copy-icon

Управление запланированными задачами Copy-icon

  • Обновление или добавление (если такой задачи еще нет) запланированной задачи (сущности ScheduledJobDto) в поисковом движке - PUT запрос, /v1/jobs/{jobId}
Request parameters

jobId - path-параметр, обязательный: уникальный идентификатор задачи

Request body sample

{
  "id": "string",
  "description": "string",
  "trigger": {
    "type": "SIMPLE",
    "cron": "string",
    "startTimestamp": "2025-02-21T14:09:42.437Z",
    "periodSeconds": 0
  },
  "data": {
    "jobType": "HTTP_REQUEST",
    "url": "http://test:8080/api/test/v1/toggles",
    "method": "POST",
    "requestParams": {
      "active": true
    },
    "requestBody": "{\"productId\":\"DC123213213\",\"userId\":\"21312321321\"}",
    "headers": {
      "Content-Type": [
        "application/json"
      ]
    }
  }
}
Copy-icon
Response codes

204 - операция выполнена успешно, задача обновлена или добавлена

400 - ошибка, не удалось создать задачу

404 - ошибка, задача с указанным ID не найдена

500 - ошибка сервера

  • Добавление запланированной задачи (сущности ScheduledJobDto) в поисковый движок - POST запрос, /v1/jobs
Request parameters

Отсутствуют.

Request body sample
{
  "id": "string",
  "description": "update price daily",
  "trigger": {
    "type": "CRON_EXPRESSION",
    "cron": "0 0 10 * * ?",
    "startTimestamp": "2025-02-21T14:16:18.187Z",
    "periodSeconds": 1800
  }, "data": { "jobType": "HTTP_REQUEST", "url": "http://price:8080/api/price/v1/prices/DC321321", "method": "POST", "requestParams": { "active": true }, "requestBody": "{\"productId\":\"DC123213213\",\"userId\":\"21312321321\"}", "headers": { "Content-Type": [ "application/json" ] } } }
Copy-icon
Response codes

201 - операция успешно выполнена, задача создана

400 - ошибка, не удалось создать задачу

500 - ошибка сервера

  • Удаление запланированной задачи по ее ID- DELETE запрос, /v1/jobs/{jobId}
Request parameters

jobId - path-параметр, обязательный: уникальный идентификатор задачи


Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 202.

Response codes

202 - операция по удалению задачи выполнена успешно

404 - ошибка, задача с указанным ID не найдена

500 - ошибка сервера

Связанные статьи

Микросервисы