28.12.2023 Андрей Прыкин 3410
Маршрутизация сообщений в 1С: Шина

Содержание:

Узел, называемый «МаршрутизаторПоСодержимому» отвечает за распределение по следующим узлам, идущим за ним, сообщений. Для выполнения данного действия, у этого узла есть специальное событие «ОбработчикОпределенияПолучателей», которое содержит формулировки по узлам, относительно тех или иных параметров. Если таких настроек внутри обработчика нет, то узел «МаршрутизаторПоСодержимому» отправит сообщение в каждый из следующих узлов.


Важно знать, что у обработчика задаются такие параметры:

• Параметр: Контекст, отвечает за то, какой именно из узлов ответственен за вызов;

• Параметр «Сообщение» отвечает за само содержимое сообщения, которое подлежит отправке. Данный параметр нельзя редактировать, ни по содержимому, ни по заголовкам.


Если обработчиком была возвращена пустая коллекция с узлами – это означает, что сообщение не прошло этап доставки. Если вернулся массив, который содержит минимум одного не того получателя, то сообщение заново будет перенаправлено в канал с недоставленными сообщениями, однако, все корректные получатели его увидят. Если при процедуре обработки появилась ошибка, то сообщение будет содержаться только внутри канала недоставленных сообщений.   


1.     Как происходит маршрутизация сообщений для всех и выбранному получателю

 

Рассмотрим, как происходит маршрутизация сообщений, когда необходимо отправить их всем.


Существует такой процесс, отвечающий за интеграцию:

1.     Генерация сообщения через таймер;

2.     Расположение сообщения внутри узла «ОтправкаВсем»;

3.     Распределение сообщения в узлы: HTTP и RabbitMQНазначение. 

А «ОбработчикОпределенияПолучателей» узла «ОтправкаВсем» останется незаполненным.


Этот процесс отображён на скриншоте с примером ниже:



Процесс, отвечающий за интеграцию


Как раз, при отсутствии обработчика по событию «ОбработчикОпределенияПолучателей» сообщение будет направлено и в узел HTTP, и в узел «RabbitMQНазначение».


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


Когда сообщение две независимые ветки, как в схеме выше, получили, то остаётся ждать от них ответ и, после его получения, обработать данный ответ.


Если необходимо направить сообщения конкретному получателю или получателям, то алгоритм маршрутизации уже будет несколько иным.


Интеграция будет происходить так: через источник программы «Вход» нужно произвести отправку, но именно программную, к примеру, через обработчика 1С сервиса HTTP. Это показано на схеме далее:



Источник программы «Вход»


Через источник программы наше сообщение отправляется в маршрутизатор относительно содержимого с наименованием «ОпределениеВерсии». Исходя из того, каким будет параметр «Формат», этот маршрутизатор или перенаправит его для трансформации, или перенаправит его в канал «V2».


Код программы у обработчика по событию «ОбработчикОпределенияПолучателей» имеет следующий вид:


метод Трансформироватьилинет(Контекст: Контекствызова,

                               Сообщение: МаршрутизаторПример2.Сообщение) : Коллекция<УзелСхемы>

пер Следующийузел = Сообщение.Получитьпараметр("Формат") == 1

                                                               ? Схема. Узлы.Трансформация

                                                               : Схема.Узлы. V2

Возврат [СледующийУзел]

;


В случае, когда формат имеет значение единицы – сообщение будет перенаправлено в узел по трансформации, если значение иное, то в канал «V2».   


2.     Баланс нагрузки в системе 1С: Шина

 

Рассмотрим, как в системе 1С: Шина происходит балансировка нагрузки.


К примеру, пусть есть некое большое количество сообщений, которое отправляется в «Канал1СНазначение». Схема описанного процесса будет иметь такой вид, как отображено ниже:



Схема описанного процесса


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


Это значит, что сообщения необходимо распределить между каналами: «Канал1СНазначение1» и «Канал1СНазначение2». А в самой базе данных уже проводить обработку одновременную от этих каналов. Такой метод распределения большого потока сообщений демонстрируется в схеме с примером процесса далее:



Метод распределения большого потока сообщений


После прихода сообщений, они распределяются на узел «БалансировкаНагрузкиНазначений». В этом узле, при помощи случайной генерации чисел, избирается какой-то из двух наших узлов, этот узел и получит сообщение.


Такой метод поможет разграничить сообщения по двум каналам и провести их обработку в базах тех, кто является получателем.


При этом, обработчик события 1С, его программный код, «ОбработчикОпределенияПолучателей» выглядит так, как показано на примере далее:


метод Балансировка(Контекст : Контекствызова,

                               Сообщение: МаршрутизаторПример3.Сообщение): Коллекция«УзелСхемы»

пер Генератор = новый СлучайныйГенератор()

пер Следующийузел = Генератор.Случайноечисло(е, 1) > 0.5

                                                               ? Схема.Узлы. Канал1Сназначение1

                                                               : Схема. Узлы. Канал1Сназначение2

возврат [Следующийузел]

;

 

Специалист компании ООО "Кодерлайн"

Андрей Прыкин

   

Наши проекты

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конф...

ООО "Смена"
ООО "Смена"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Комплексная автоматизация

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)
ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)

Отрасль:
Оптовая торговля транспортными средствами и оборудованием

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Финансы, управленческий учет, мониторинг показателей
- Бухгалтерский уче...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

АО "Нижегородский водоканал"
АО "Нижегородский водоканал"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

-Кадровый учет
-Расчет зарплаты
-Регламентированная отчетность
-Подбор ...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

Отрасль:
Производство кабельной продукции

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

- Оформление заказов покупателей;
- Управление складскими запасами;
- Ана...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в
ИП Любо Виктория Александровна (ООО «Рекреация»)

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Осуществлены разработки:
– отчета по спецификации Заказа;
– загрузки сп...

ООО "ТК "Сытый Дом-НН"
ООО "ТК "Сытый Дом-НН"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Управление торговлей 8

Взаиморасчеты с покупателями
Оптовая торговля
Управление складскими за...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение