UNPKG

@dieugene/queuer

Version:

Node.js library for seamless integration with message queues through Yandex Cloud Functions

176 lines (124 loc) 4.85 kB
# Queuer Node.js библиотека для работы с очередями сообщений через Yandex Cloud Functions. ## Описание Queuer предоставляет простой и удобный интерфейс для отправки сообщений в очереди через Yandex Cloud Functions. Особенно полезна для работы с Telegram ботами и системами обработки сообщений. ## Установка ```bash npm install @dieugene/queuer ``` ## Инициализация ```javascript const queuer = require('@dieugene/queuer')(); // Или с указанием ID функции Yandex Cloud const queuer = require('@dieugene/queuer')('your-yandex-cloud-function-id'); ``` По умолчанию используется ID функции из переменной окружения `QUEUER_FUNCTION_ID` или значение по умолчанию. ## API ### `queuer.post(domain, body, queue_url)` Отправляет сообщение в очередь. **Параметры:** - `domain` (string) - домен для категоризации сообщений - `body` (object) - данные для отправки - `queue_url` (string, optional) - URL очереди **Пример:** ```javascript await queuer.post('telegram-bot', { chat_id: 123456789, text: 'Привет, мир!' }); ``` ### `queuer.post.item(item)` Отправляет произвольный элемент в очередь. **Параметры:** - `item` (object|string) - элемент для отправки **Пример:** ```javascript await queuer.post.item({ domain: 'notifications', user_id: 123, message: 'Новое уведомление' }); ``` ### `queuer.send_to_queue(input, bot_token, queue_url, domain)` Отправляет данные от бота в очередь. **Параметры:** - `input` - входные данные - `bot_token` (string) - токен бота - `queue_url` (string) - URL очереди - `domain` (string) - домен **Пример:** ```javascript await queuer.send_to_queue( webhookData, 'YOUR_BOT_TOKEN', 'https://your-queue-url.com', 'telegram-bot' ); ``` ### `queuer.is_from_queue(input)` Проверяет, пришли ли данные из очереди. **Параметры:** - `input` - входные данные для проверки **Возвращает:** `boolean` **Пример:** ```javascript if (queuer.is_from_queue(webhookData)) { console.log('Данные пришли из очереди'); } ``` ### `queuer.ensureQueueItem(input, value, field)` Проверяет корректность элементов очереди и перенаправляет неправильные. **Параметры:** - `input` - входные данные - `value` - ожидаемое значение - `field` (string, optional) - поле для проверки ('queue_url' по умолчанию) **Возвращает:** `boolean` - true если все элементы корректны ## Переменные окружения - `QUEUER_FUNCTION_ID` - ID функции Yandex Cloud (по умолчанию) - `LOG` - включает логирование, если содержит 'QUEUER' ## Примеры использования ### Telegram бот с очередями ```javascript const queuer = require('@dieugene/queuer')(); // Обработка входящего сообщения async function handleMessage(update) { if (queuer.is_from_queue(update)) { // Обработка сообщения из очереди console.log('Обрабатываем сообщение из очереди'); return; } // Отправка в очередь для обработки await queuer.send_to_queue( update, process.env.BOT_TOKEN, process.env.QUEUE_URL, 'telegram-bot' ); } ``` ### Отправка уведомлений ```javascript const queuer = require('@dieugene/queuer')(); async function sendNotification(userId, message) { await queuer.post('notifications', { user_id: userId, message: message, timestamp: Date.now() }); } ``` ## Логирование Для включения логирования установите переменную окружения: ```bash export LOG=QUEUER ``` Или в Node.js: ```javascript process.env.LOG = 'QUEUER'; ``` ## Лицензия ISC ## Автор Eugene Ditkovsky ## Поддержка Если у вас есть вопросы или предложения, создайте [issue](https://github.com/Dieugene/queuer/issues) в репозитории проекта.