Пример использования Yandex Message Queue на Node.js
Node.js – среда для запуска JavaScript-приложений. С помощью AWS SDK для JavaScript в Node.js можно управлять очередями сообщений в Message Queue, отправлять и принимать сообщения.
Установка
Установите AWS SDK для JavaScript в Node.js по инструкции на официальном сайте.
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте роль editor сервисному аккаунту.
- Создайте статический ключ доступа.
Задайте переменные окружения:
$ export AWS_ACCESS_KEY_ID="<идентификатор ключа доступа>"
$ export AWS_SECRET_ACCESS_KEY="<секретный ключ>"
Пример
В этом примере:
- Устанавливается соединение с Message Queue.
- Создается очередь сообщений с именем
ymq_example_nodejs_sdk
. - В очередь передается сообщение с текстом
test message
. - Сообщение считывается из очереди и отображается в терминале.
- Удаляется созданная очередь сообщений.
var AWS = require('aws-sdk');
var ymq = new AWS.SQS({
'region': 'ru-central1',
'endpoint': 'https://message-queue.api.cloud.yandex.net',
});
async function createQueue() {
params = {
'QueueName': 'ymq_example_nodejs_sdk',
}
result = await ymq.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 ymq.sendMessage(params).promise();
console.log('Message sent, ID: ' + result['MessageId']);
}
async function receiveMessage() {
params = {
'QueueUrl': queueUrl,
'WaitTimeSeconds': 10,
}
result = await ymq.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 ymq.deleteMessage(deleteParams).promise()
})
}
async function deleteQueue() {
params = {
'QueueUrl': queueUrl,
}
result = await ymq.deleteQueue(params).promise();
console.log('Queue deleted')
}
async function main() {
queueUrl = await createQueue();
await sendMessage(queueUrl);
await receiveMessage(queueUrl);
await deleteQueue(queueUrl);
}
main()