Skip to content

leemuar/yandexmq-sdk-1c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 

Repository files navigation

ЯндексMQ SDK для 1С:Предприятия

Библиотека для работы с очередями сообщений Яндекс Message Queue из 1С:Предприятия. Позволяет разработчикам на платформе 1С:Предприятие создавать программы, взаимодействующие с облачным брокером сообщений ЯндексMQ (YMQ). Аналог Amazon SQS (Simple Queue Service)

Быстрый старт

// для работы с ЯндексMQ обязательно требуются AccessKey и SecretKey.
// Это своеобразные логин и пароль для доступа к сервису.
// как их получить описано на https://yandex.cloud/ru/docs/iam/operations/sa/create-access-key
AccessKey = "...";
SecretKey = "...";
ЯндексMQ  = Обработки.ЯндексMQ.НовыйКлиент( AccessKey, SecretKey );

// создадим новую очередь
АдресОчереди = ЯндексMQ.CreateQueue( "queue-name" );

// положим сообщение в очередь
ЯндексMQ.SendMessage( АдресОчереди, "Это текст сообщения" );

// получим сообщения из очереди
Сообщения = ЯндексMQ.RecieveMessage( АдресОчереди );

// обработаем все полученные сообщения
Для Каждого ДанныеСообщения Из Сообщения Цикл
    // КакТоОбработать( ДанныеСообщения.Body );
    // успешно обработанные - удалим из очереди
    ЯндексMQ.DeleteMessage( АдресОчереди, ДанныеСообщения.ReceiptHandle );
КонецЦикла;

Как установить

Скачайте файл конфигурации (.cf) в разделе "Releases" и перенесите из него обработку "ЯндексMQ" в свою конфигурацию. Рекомендуется переносить обработку напрямую из файла конфигурации, не сохранять ее как внешнюю: обработка конфигурации содержит модуль менеджера с удобным методом-фабрикой, при сохранении обработки как внешней модуль менеджера теряется

Как использовать

Библиотека использует объектный подход к своей работе. Для начала работы необходимо получить объект библиотеки. В модуле менеджера обработки есть готовый метод-фабрика для этого:

// для работы с ЯндексMQ обязательно требуются AccessKey и SecretKey.
// Это своеобразные логин и пароль для доступа к сервису.
// как их получить описано на https://yandex.cloud/ru/docs/iam/operations/sa/create-access-key
AccessKey = "...";
SecretKey = "...";
ЯндексMQ  = Обработки.ЯндексMQ.НовыйКлиент( AccessKey, SecretKey );

После создания объекта клиента можно вызывать его методы, выполняющие запросы к сервису очередей:

АдресОчереди = ЯндексMQ.CreateQueue( "queue-name" );
// положим сообщения в очередь
ЯндексMQ.SendMessage( АдресОчереди, "Это текст сообщения" );

Библиотека предлагает 2 набора методов: простые и детальные.

Простые стараются сделать максимум за вас: выполнить запрос и вернуть результат в удобном виде. Они возвращают результат операции: успешно или нет, данные сообщения или неопределено и т.п. Например, DeleteQueue() вернет Истина в случае успешного удаления, и Ложь - в случае ошибок. Или CreateQueue() возвращает строку URL созданной очереди в случае успеха или Неопределено - при ошибке. Если ошибка при запросе все же произойдет - простые методы не дадут детальной информации почему. Здесь могут пригодиться детальные методы.

Детальные методы заканчиваются на Response: CreateQueueResponse(), PurgeQueueResponse() и пр. Эти методы возвращают детальные данные ответа: код http, тело ответа, заголовки и т.п. Их можно детально разобрать, залогировать или написать более подробную обработку ответа самостоятельно:

Ответ = ЯндексMQ.DeleteQueueResponse( QueueUrl );
Если 200 <> Ответ.КодСостояния Тогда
    ЛогОшибка( Ответ.Заголовки, Ответ.Тело, Ответ.КодСостояния );
КонецЕсли;

Тело сообщения будет в виде двоичных данных. Можно использовать вспомогательные функции библиотеки для преобразования двоичных данных во что-то другое, например json в структуру:

Ответ  = ЯндексMQ.GetQueueAttributesResponse( QueueUrl );
Данные = ЯндексMQ.КакJson( Ответ );

Исключения

Методы библиотеки не перехватывают исключения. Считается, что библиотека не должна решать внутри себя такие ситуации как таймауты, отсутствие связи, некорректный адрес и др. Все это внештатные, исключительные ситуации, на которые должно быть брошено исключение в вызывающий код, а не возвращено какое-то значение. Всегда оборачивайте вызов методов в Попытку.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published