Skip to content

Внешняя компонента RabbitMQ для 1C

Notifications You must be signed in to change notification settings

kovalevdmv/1CRabbitMQ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 

Repository files navigation

1CRabbitMQ

Внешняя компонента RabbitMQ для 1C.

Нативная внешняя компонента написанная на Rust/C++ для удобного взаимодействия с брокером сообщений RabbitMQ без реализации внешних прокси сервисов.

Работает на Windows и Linux.

Реализованы следующие функции:

  • подключение к серверу;
  • создание канала;
  • создание очереди;
  • привязка очереди к точке обмена и указание ключа маршрутизации;
  • публикация сообщения (с получением подтверждения от сервера, что повышает надежность обмена);
  • создание получателя сообщений;
  • получение сообщений с возможность подтвердить полученное сообщение (что снижает риск потери сообщений).

Основная логика написана на Rust, что снижает вероятность утечки памяти, по сравнению с разработкой на С++, но при этом дает быстродействие сопоставимое с приложениями на С++.

Версии платформы: В linux ограничений нет, в windows требуется версия от 8.3.21 и выше.

Компонента поставляется в двух формах, в платной и бесплатной. У бесплатной версии есть одно ограничение, на размер сообщения - 10'000 символов. Компонента поставляется в виде конфигурации с примерами и обработкой КлиентRMQ, которая является оберткой над компонентой, для более удобной работы с ее методами из кода. Для использования необходимо скопировать обработку КлиентRMQ в конфигурацию, вся работа реализуется через эту обработку.

Скачать можно в разделе Релизы
Репозиторий содержит только бинарные релизы.

Для приобретения полной версии можно связаться с автором по телеграм.
Телеграм канал с прочей информацией о внешних компонентах автора.
Телеграм канал с прочими видео автора.

Примеры кода

Это только базовые примеры, более подробно можно посмотреть в видео обзоре.
Так же примеры есть в конфигурации, с которой поставляется компонента.
Так можно почитать обзорную статью по компоненте.

Отправка

//Создать экзезмпляр обработки-клиента RMQ
КлиентRMQ = Обработки.КлиентRMQ.Создать();
// Выполнить подключение к серверу
Подключение = КлиентRMQ.ПодключитьсяКСерверу("amqp://guest:guest@127.0.0.1:5672/%2f");
// Создать канал в рамках подключения. 
//В канале указать что нам нужно получать подтверждение от сервера при публикации сообщений
Канал = КлиентRMQ.СоздатьКанал(Подключение, Истина);
// Опубликовать сообщение с указанием ключа маршрутизации и точки маршрута
Ответ = КлиентRMQ.ОпубликоватьСообщение(Канал, "text message", "test", КлиентRMQ.Exchange_direct());
// !!! ОБЯЗАТЕЛЬНО ОТКЛЮЧИТЬСЯ ОТ СЕРВЕРА. ИНАЧЕ ЛИШНИЙ РАСХОД ПАМЯТИ.
КлиентRMQ.ОтключитьсяОтСервера(Подключение);

Получение

// Создать экзезмпляр обработки-клиента RMQ
КлиентRMQ = Обработки.КлиентRMQ.Создать();
// Выполнить подключение к серверу
Подключение = КлиентRMQ.ПодключитьсяКСерверу("amqp://guest:guest@127.0.0.1:5672/%2f");
// Создать канал в рамках подключения.
Канал = КлиентRMQ.СоздатьКанал(Подключение);
// Создать получателя, через которого будут получаться сообщения из очереди
Получатель = КлиентRMQ.СоздатьПолучателя(Канал, "test");
// СледующееСообщение() ожидает сообщение в очереди. 
//Эта функция блокирует основной поток, поэтому этот код надо запускать в фоне.
Пока КлиентRMQ.СледующееСообщение(Получатель) Цикл // только ожидает сообщение
	// получить данные сообщения
	ДанныеСообщения = КлиентRMQ.ДанныеСообщения(); // получает данные сообщения
	Сообщить(ДанныеСообщения.Данные);
	// подтвердить получение сообщения. После чего оно удалится из очереди.
	Ответ = КлиентRMQ.ПодтвердитьСообщение(Канал, ДанныеСообщения.Тег);
	Прервать;
КонецЦикла;
// !!! ОБЯЗАТЕЛЬНО ОТКЛЮЧИТЬСЯ ОТ СЕРВЕРА. ИНАЧЕ ЛИШНИЙ РАСХОД ПАМЯТИ.
КлиентRMQ.ОтключитьсяОтСервера(Подключение);

About

Внешняя компонента RabbitMQ для 1C

Resources

Stars

Watchers

Forks

Packages

No packages published