Триггер для Message Queue, который передает сообщения в функцию Cloud Functions
Триггер для Message Queue предназначен для разгрузки очереди сообщений. Он принимает сообщения из очереди и передает их в функцию Cloud Functions для обработки. После успешной обработки триггер удаляет сообщения из очереди, а при ошибке — возвращает сообщения в очередь через таймаут видимости. Если для очереди не настроена Dead Letter Queue, сообщение будет повторно передаваться в функцию, пока успешно не обработается или не закончится срок его хранения.
Важно
- Триггер можно создать только для стандартной очереди сообщений.
- Триггер должен находиться в одном облаке с очередью, из которой он читает сообщения.
- Для одной очереди сообщений можно создать только один триггер.
Запросы к очереди сообщений при работе триггера не тарифицируются.
Триггеру для Message Queue необходимы сервисные аккаунты для чтения из очереди сообщений и вызова функции. Вы можете использовать один и тот же сервисный аккаунт для обеих операций.
О том, как создать триггер для Message Queue, читайте в инструкции Создать триггер для Message Queue, который передает сообщения в функцию Cloud Functions.
Роли, необходимые для корректной работы триггера для Message Queue
- Для создания триггера вам необходимы:
- Роль
viewer
на каталог с очередью сообщений, из которой триггер читает сообщения. - Роль
viewer
на каталог с функцией, которые вызывает триггер. - Разрешение на сервисный аккаунт, от имени которого триггер выполняет операции. Это разрешение входит в роли iam.serviceAccounts.user, editor и выше.
- Роль
- Для работы триггера сервисным аккаунтам необходимы роли:
editor
на каталог с очередью сообщений, из которой триггер читает сообщения.functions.functionInvoker
на каталог с функцией, которую вызывает триггер.
Подробнее об управлении доступом.
Формат сообщения от триггера Message Queue
После того как триггер примет сообщение из очереди, он передаст его в функцию в следующем формате:
{
"messages":[
{
"event_metadata":{
"event_id":"cce76685-5828-4304-a83d-9564********",
"event_type":"yandex.cloud.events.messagequeue.QueueMessage",
"created_at":"2019-09-24T00:54:28.980441Z",
"cloud_id":"b1gvlrnlh2sd********",
"folder_id":"b1g88tflh2sd********",
},
"details":{
"queue_id":"yrn:yc:ymq:ru-central1:21i6v06sqmsa********:event-queue",
"message":{
"message_id":"cce76685-5828-4304-a83d-9564********",
"md5_of_body":"d29343907090dff4cec4a9a0********",
"body":"message body",
"attributes":{
"SentTimestamp":"1569285804456"
},
"message_attributes":{
"messageAttributeKey":{
"data_type":"StringValue",
"string_value":"value"
}
},
"md5_of_message_attributes":"83eb2d0afefb150c1ffe69f6********"
}
}
},
{
"event_metadata":{
"event_id":"1f32fd25-11fc-4c08-88e7-d871********",
"event_type":"yandex.cloud.events.messagequeue.QueueMessage",
"created_at":"2019-09-24T00:54:28.980492Z",
"cloud_id":"b1gvlrnlh2sd********",
"folder_id":"b1g88tflh2sd********",
},
"details":{
"queue_id":"yrn:yc:ymq:ru-central1:21i6v06sqmsa********:event-queue",
"message":{
"message_id":"1f32fd25-11fc-4c08-88e7-d871********",
"md5_of_body":"d29343907090dff4cec4a9a0********",
"body":"message body",
"attributes":{
"SentTimestamp":"1569285806456"
},
"message_attributes":{
"messageAttributeKey":{
"data_type":"StringValue",
"string_value":"value"
}
},
"md5_of_message_attributes":"83eb2d0afefb150c1ffe69f6********"
}
}
}
]
}