Таймер, который отправляет сообщения в WebSocket-соединения
Таймер — это триггер, который отправляет сообщения в WebSocket-соединения по расписанию. Расписание задается в виде cron-выражения. Время в cron-выражении указывается по UTC+0
Таймеру необходим сервисный аккаунт для отправки сообщений в WebSocket-соединения.
О том, как создать таймер, читайте в инструкции Создать таймер, который отправляет сообщения в WebSocket-соединения.
Формат cron-выражения
Порядок полей в cron-выражении: Minutes Hours Day-of-month Month Day-of-week Year.
Возможные значения полей
Примечание
Служебные символы, а также имена месяцев и дней недели не чувствительны к регистру: MON эквивалентно mon.
| Название поля |
Обязательное поле |
Допустимые значения |
Поддержка специальных символов |
|---|---|---|---|
Minutes (минуты) |
Да | 0-59 | ,, -, *, / |
Hours (часы) |
Да | 0-23 | ,, -, *, / |
Day of month (день месяца) |
Да | 1-31 | ,, -, *, ?, /, L, W |
Month (месяц) |
Да | 1-12, JAN-DEC |
,, -, *, / |
Day of week (день недели) |
Да | 1-7, SUN-SAT |
,, -, *, ?, /, L, # |
Year (год) |
Нет | пустое, 1970-2099 | ,, -, *, / |
Специальные символы
Для cron-выражения доступны следующие специальные символы:
-
*— выбор всех значений в поле.Символ
*в полеMinutes: триггер запускаетсякаждую минуту. -
?— выбор любого значения поля. ПоляDay of monthиDay of weekне могут быть заполнены одновременно. Если вы указали значение в одном из этих полей, укажите символ?в другом.Значение
10в полеDay of monthи символ?в полеDay of week: триггер запускается каждый 10-ый день месяца. -
-— выбор диапазона значений.Диапазон
10-12в полеHours: триггер запускается в 10, 11 и 12 часов. -
,— выбор нескольких значений.Значения
MON,WED,FRIв полеDay of week: триггер запускается в понедельник (Monday), среду (Wednesday) и пятницу (Friday). -
/— инкрементальное увеличение значения.Значения
0/15в полеMinutes: триггер запускается в 0, 15, 30 и 45 минут. -
L— символ имеет разные значения для двух полей, в которых разрешен:- Для поля
Day of monthзначит последний день месяца. - Для поля
Day of weekзначит последний день недели, то есть7(суббота,SAT).
Значение
Lв полеDay of month: триггер запускается 31 числа для января, 28 числа для февраля и т. д. - Для поля
-
W— выбор ближайшего буднего дня к указанной дате.Значение
15Wв полеDay of month: триггер запускается в ближайший будний день к 15 числу месяца. Если 15 число это суббота, триггер будет запускаться 14 числа в пятницу.Примечание
Символы
LиWв полеDay of monthтакже объединяются в сочетаниеLW: триггер запускается в последний будний день месяца. -
#— выбор N-ного дня месяца.Значение
6#3в полеDay of week: триггер запускается в третью пятницу месяца (6 — пятница, 3 — третья пятница месяца).
Примеры cron-выражений
| Cron-выражение | Описание |
|---|---|
* * * * ? * |
Триггер запускается каждую минуту. |
0 * ? * * * |
Триггер запускается каждый час. |
15 10 ? * * * |
Триггер запускается каждый день в 10:15. |
Роли, необходимые для корректной работы таймера
- Для создания таймера вам необходимо разрешение на сервисный аккаунт, от имени которого таймер выполняет операцию. Это разрешение входит в роли iam.serviceAccounts.user, editor и выше.
- Для работы таймера сервисному аккаунту необходима роль
api-gateway.websocketBroadcasterна каталог, в котором находится API-шлюз.
Подробнее об управлении доступом.
Формат сообщения от таймера
После того как триггер сработает, он отправит в WebSocket-соединения следующее сообщение:
{
"messages": [
{
"event_metadata": {
"event_id": "a1s41g2n5g0o********",
"event_type": "yandex.cloud.events.serverless.triggers.TimerMessage",
"created_at": "2019-12-04T12:05:14.227761Z",
"cloud_id": "b1gvlrnlei4l********",
"folder_id": "b1g88tflru0e********"
},
"details": {
"trigger_id": "a1sfe084v4se********",
"payload": "payload-message"
}
}
]
}