1С:Шина
25.05.2022

Настройка обмена сообщениями между базой на платформе "1С:Предприятие" и брокером сообщений RabbitMQ с использованием "1С:Шины"

1С:Шина поддерживает обмен данными со сторонними брокерами сообщений:

Далее рассматривается пример настройки обмена данными между базой на платформе "1С:Предприятие" и брокером сообщений RabbitMQ.

В примере выполняется отправка сообщения из RabbitMQ в "1С:Шину", которое поступает в базу, работающую на платформе "1С:Предприятие".

В ходе этого примера вы:

В панели управления брокером сообщений RabbitMQ:

В среде разработки "1С:Шины":

На сервере 1С:Шины:

Создадите демонстрационную базу 1С:Предприятия:

Проверите обмен сообщениями.

 

Создание очереди сообщений в RabbitMQ

На этом этапе в брокере сообщений необходимо создать очередь сообщений, через которую мы будем отправлять сообщение.

Создание проекта

На этом этапе вы создадите в среде разработки проект с описанием схемы интеграции и опубликуете его на сервере "1С:Шины", создав приложение.

"1С:Шина" подготовит рабочую область, построит проект и откроет его в среде разработки.

"1С:Шина" создаст в проекте новый процесс интеграции и откроет редактор для создания его схемы.

 

Настройка приложения в панели управления "1С:Шины"

 

Далее необходимо заполнить параметры у узла RabbitMqИсточник, которые позволят взаимодействовать "1С:Шине" с брокером RabbitMQ.

 Настройка информационной базы "1С:Предприятия"

В информационной базе Офис вы создадите объект конфигурации Сервис интеграции, взаимодействующий с севером "1С:Шины". Под управлением этого сервиса интеграции будет работать один канал. По каналу ОбменСКроликом сообщения от RabbitMQ будут поступать в базу Офис.

В комплект поставки 1С:Шины включены шаблоны конфигураций Офис (office_template.cf) и Магазин (shop_template.cf).

После этого перед вами откроется окно обработчика получения сообщения канала Основной_ОбменСКроликом_Канал1СНазначение

Копировать в буфер обмена
Процедура Основной_ОбменСКроликом_Канал1СНазначениеОбработкаПолученияСообщения(Сообщение, Отказ)
                // Вставить содержимое обработчика.                
   РазмерСообщения = Сообщение.Параметры.Получить("РазмерСообщения");
   Если РазмерСообщения <> Неопределено Тогда
      РазмерБуфера = Число(РазмерСообщения); 
                               
   Иначе
      РазмерБуфера = 1024;    
                               
   КонецЕсли;
                
   Тело  = Новый БуферДвоичныхДанных(0);
   Буфер = Новый БуферДвоичныхДанных(РазмерБуфера);
                
   Поток = Сообщение.ПолучитьТелоКакПоток();
                
   Пока Истина Цикл
      Прочитано = Поток.Прочитать(Буфер, 0, РазмерБуфера);
                               
      Если Прочитано > 0 Тогда
         Тело = Тело.Соединить(Буфер);  
                                               
      КонецЕсли;   
                               
      Если Прочитано < РазмерБуфера Тогда
         Прервать; 
                                               
      КонецЕсли; 
                               
   КонецЦикла;
                
   Отчет = ПолучитьСтрокуИзБуфераДвоичныхДанных(Тело);
                
   ПисьмоОбъект = Справочники.ВходящиеПисьма.СоздатьЭлемент();
   ПисьмоОбъект.Наименование   = "Письмо от Кролика";
   ПисьмоОбъект.Дата           = ТекущаяДата();
   ПисьмоОбъект.ПочтовыйЯщик   = "POP3";
   ПисьмоОбъект.ВидСодержимого = Перечисления.ВидСодержимогоВходящегоПисьма.HTML;
                
   ПисьмоОбъект.УстановитьСсылкуНового(Справочники.ВходящиеПисьма.ПолучитьСсылку());
                
   ПисьмоОбъект.Текст = "
	+ СтрЗаменить(СтрЗаменить(Отчет, 
	Символ(0), 
	""), Символы.ПС, 
	"
") + " "
; НЗ = РегистрыСведений.СостояниеВходящихПисем.СоздатьНаборЗаписей(); НЗ.Отбор.Письмо.Установить(ПисьмоОбъект.ПолучитьСсылкуНового()); Запись = НЗ.Добавить(); Запись.Письмо = ПисьмоОбъект.ПолучитьСсылкуНового(); Запись.Прочитано = Ложь; НЗ.Записать(); ПисьмоОбъект.Записать(); КонецПроцедуры
 

Создайте регламентное задание с именем СервисыИнтеграции.

Копировать в буфер обмена
Процедура ВыполнениеОбработкиСервисовИнтеграции() Экспорт
   СервисыИнтеграции.ВыполнитьОбработку();
КонецПроцедуры

Подключение информационных баз 1С:Предприятия 8 к серверу "1С:Шины"

Вы настроили конфигурации Офис так, что она готова к взаимодействию с использованием сервера "1С:Шины". Непосредственное подключение информационной базы 1С:Предприятия к конкретному серверу выполняется уже в режиме "1С:Предприятие".

В списке доступных сервисов интеграции вы увидите единственную запись Обмен с кроликом — этот тот самый сервис интеграции, который вы создали в Конфигураторе.

 

На этом создание примера закончено, можно приступать к тестированию обмена сообщениями.

 

 

 На этом пример по отправке сообщения из стороннего брокера сообщений RabbitMQ в базу, работающую на платформе "1С:Предприятие", через "1С:Шину" завершён.