Creating a trigger for Message Queue that sends messages to a Serverless Containers container
Create a trigger for a Message Queue message queue and process the messages using the Serverless Containers container.
- You can only create a trigger for a standard message queue.
- The trigger must be in the same cloud as the queue that messages are read from.
- Only one trigger can be created for each message queue.
Before you begin
To create a trigger, you need:
A container that the trigger will invoke. If you don't have a container:
Service accounts with rights:
- To invoke a container.
- To read from the queue the trigger receives messages from.
- (optional) To write to the Dead Letter Queue.
You can use the same service account or different ones. If you don't have a service account, create one.
A message queue that the trigger receives messages from. If you don't have a queue, create one.
Creating a trigger
The trigger is initiated within 5 minutes of being created.
In the management console, select the folder where you wish to create your trigger.
Open Serverless Containers.
On the left-hand panel, select Triggers.
Click Create trigger.
Under Basic parameters:
- Enter a name and description for the trigger.
- In the Type field, select Message Queue.
- In the Launched resource field, select Container.
Under Message Queue settings, select a message queue and a service account with rights to read messages from this message queue.
(optional) Under Batch message settings, specify:
- Batch size. Values can be from 1 to 10. The default is 1.
- Maximum wait time. Values can be from 0 to 20 seconds. The default is 10 seconds.
The trigger groups messages for a period of time not exceeding the specified timeout and sends them to a container. However, the number of messages does not exceed the specified group size.
Under Container settings, select a container and specify:
- A container revision.
- A service account to be used to invoke the container.
Click Create trigger.
If you don't have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the
To create a trigger that invokes a container, run the command:
yc serverless trigger create message-queue \ --name <trigger_name> \ --queue <queue_ID> \ --queue-service-account-id <service_account_ID> \ --invoke-container-id <container_ID> \ --invoke-container-service-account-id <service_account_ID> \ --batch-size 1 \ --batch-cutoff 10s
--name: Trigger name.
--queue: Queue ID.
To find out the queue ID:
- In the management console, select the folder containing the queue.
- Select Message Queue.
- Select the desired queue.
- You can see the queue ID under General information in the ARN field.
--invoke-container-id: Container ID.
--queue-service-account-name: Service account with rights to read messages from the queue.
--invoke-container-service-account-id: Service account with rights to invoke the container.
--batch-size: Message batch size. This is an optional parameter. Values can be from 1 to 10. The default is 1.
--batch-cutoff: Maximum waiting time. This is an optional parameter. Values can be from 0 to 20 seconds. The default is 10 seconds. The trigger groups messages for a period not exceeding
batch-cutoffand sends them to a container. At the same time, the number of messages does not exceed
id: a1s5msktij********** folder_id: b1gmit33hg********** created_at: "2022-10-24T15:19:15.353909857Z" name: ymq-trigger rule: message_queue: queue_id: yrn:yc:ymq:ru-central1:b1gmit33ng**********:my-mq service_account_id: bfbqqeo6jk********** batch_settings: size: "1" cutoff: 10s invoke_container: container_id: bba5jb38o8********** service_account_id: bfbqqeo6jk********** status: ACTIVE
You can create a trigger for Message Queue using the create.
Checking the result
Make sure the trigger is working properly. To do this, view container logs that show information about invocations.
Check that the number of enqueued messages is decreasing. To do this, view the queue statistics:
- In the management console, open Message Queue.
- Select the queue that you created the trigger for.
- Go to Monitoring. View the Messages in queue chart.