Пример использования Yandex Message Queue на Node.js
Node.js
Установка
Установите AWS SDK для JavaScript в Node.js по инструкции
npm install @aws-sdk/client-sqs@3.445.0
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте роль editor сервисному аккаунту.
- Создайте статический ключ доступа.
Задайте переменные окружения:
export AWS_ACCESS_KEY_ID="<идентификатор_ключа_доступа>"
export AWS_SECRET_ACCESS_KEY="<секретный_ключ>"
Пример
В этом примере:
- Устанавливается соединение с Message Queue.
- Создается очередь сообщений с именем
mq_example_nodejs_sdk
. - В очередь передается сообщение с текстом
test message
. - Сообщение считывается из очереди и отображается в терминале.
- Удаляется созданная очередь сообщений.
var AWS = require('aws-sdk');
var mq = new AWS.SQS({
'region': 'ru-central1',
'endpoint': 'https://message-queue.api.cloud.yandex.net',
});
async function createQueue() {
params = {
'QueueName': 'mq_example_nodejs_sdk',
}
result = await mq.createQueue(params).promise();
queueUrl = result['QueueUrl'];
console.log('Queue created, URL: ' + queueUrl);
return queueUrl;
}
async function sendMessage(queueUrl) {
params = {
'QueueUrl': queueUrl,
'MessageBody': 'test message',
}
result = await mq.sendMessage(params).promise();
console.log('Message sent, ID: ' + result['MessageId']);
}
async function receiveMessage() {
params = {
'QueueUrl': queueUrl,
'WaitTimeSeconds': 10,
}
result = await mq.receiveMessage(params).promise();
result['Messages'].forEach(async function(msg) {
console.log('Message received')
console.log('ID: ' + msg['MessageId'])
console.log('Body: ' + msg['Body'])
deleteParams = {
'QueueUrl': queueUrl,
'ReceiptHandle': msg['ReceiptHandle'],
}
await mq.deleteMessage(deleteParams).promise()
})
}
async function deleteQueue() {
params = {
'QueueUrl': queueUrl,
}
result = await mq.deleteQueue(params).promise();
console.log('Queue deleted')
}
async function main() {
queueUrl = await createQueue();
await sendMessage(queueUrl);
await receiveMessage(queueUrl);
await deleteQueue(queueUrl);
}
main()