Skip to content

Обзор архитектуры

Подсистема интеграции реализует паттерн Message Queue (очередь сообщений) для надёжного обмена данными между 1С и внешними системами.

Основные принципы

  1. Асинхронность — регистрация сообщения отделена от его формирования и отправки
  2. Надёжность — сообщения хранятся в очереди до успешной доставки
  3. Отслеживаемость — полная история статусов каждого сообщения
  4. Расширяемость — произвольные обработчики и множество типов подписчиков

Архитектурная диаграмма

┌──────────────────────────────────────────────────────────────────────────────┐
│                            ИСХОДЯЩИЙ ПОТОК                                   │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌─────────────┐    ┌──────────────────┐    ┌──────────────────────────┐   │
│  │ Триггер     │    │ Регистрация      │    │ Очередь исходящих        │   │
│  │ события     │───▶│ сообщения        │───▶│ сообщений                │   │
│  │             │    │                  │    │ (инт_ОчередьИсходящих... │   │
│  └─────────────┘    └──────────────────┘    └────────────┬─────────────┘   │
│                                                          │                  │
│                      ┌───────────────────────────────────┘                  │
│                      ▼                                                       │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │                    РЕГЛАМЕНТНОЕ ЗАДАНИЕ                               │  │
│  │                    Менеджер потоков формирования                      │  │
│  └───────────────────────────────┬──────────────────────────────────────┘  │
│                                  │                                          │
│                                  ▼                                          │
│  ┌─────────────────────┐    ┌─────────────────────┐                        │
│  │ Фоновое задание #1  │    │ Фоновое задание #N  │                        │
│  │ Формирование        │    │ Формирование        │                        │
│  │ сообщений           │    │ сообщений           │                        │
│  └─────────┬───────────┘    └──────────┬──────────┘                        │
│            │                           │                                    │
│            └─────────────┬─────────────┘                                    │
│                          ▼                                                  │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │  Поток данных (инт_ПотокиДанных)                                     │  │
│  │  ├─ Обработчик (BSL-код)                                             │  │
│  │  ├─ Валидация (OpenAPI Schema)                                       │  │
│  │  └─ Подписчики (ТЧ ПодписчикиПотока)                                 │  │
│  └───────────────────────────┬──────────────────────────────────────────┘  │
│                              │                                              │
│                              ▼                                              │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │  Очередь отправки (инт_ОчередьОтправкиИсходящихСообщений)            │  │
│  │  Сообщение × Подписчик                                                │  │
│  └───────────────────────────┬──────────────────────────────────────────┘  │
│                              │                                              │
│                              ▼                                              │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │                    РЕГЛАМЕНТНОЕ ЗАДАНИЕ                               │  │
│  │                    Менеджер потоков рассылки                          │  │
│  └───────────────────────────┬──────────────────────────────────────────┘  │
│                              │                                              │
│                              ▼                                              │
│  ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────────────┐ │
│  │ Подписчик HTTP   │  │ Подписчик MQ     │  │ Подписчик Kafka          │ │
│  │ (REST API)       │  │ (RabbitMQ)       │  │                          │ │
│  └────────┬─────────┘  └────────┬─────────┘  └────────────┬─────────────┘ │
│           │                     │                         │                │
└───────────┼─────────────────────┼─────────────────────────┼────────────────┘
            │                     │                         │
            ▼                     ▼                         ▼
     ┌────────────┐        ┌────────────┐           ┌────────────┐
     │  Внешняя   │        │  Брокер    │           │  Kafka     │
     │  система   │        │  RabbitMQ  │           │  Cluster   │
     └────────────┘        └────────────┘           └────────────┘

Ключевые объекты метаданных

Справочники (конфигурация)

ОбъектНазначение
инт_ПотокиДанныхОпределение потоков: направление, обработчик, валидация
инт_ПодписчикиБазовый справочник подписчиков
инт_ПодписчикиHTTPHTTP-подписчики с настройками endpoint
инт_ПодписчикиRabbitMQПодписчики RabbitMQ
инт_ПодписчикиKafkaПодписчики Apache Kafka
инт_ПодписчикиJRPCПодписчики JSON-RPC 2.0
инт_СхемыСхемы валидации (OpenAPI 3.0)
инт_ЭндпоинтыНастройки подключения к внешним системам

Регистры сведений (данные)

ОбъектНазначение
инт_ОчередьИсходящихСообщенийОчередь сообщений к отправке
инт_ОчередьВходящихСообщенийОчередь входящих сообщений
инт_ТекущийСтатусИсходящихСообщенийАктуальный статус каждого сообщения
инт_ИсторияСтатусовИсходящихСообщенийПолная история изменения статусов
инт_ОчередьОтправкиИсходящихСообщенийСвязь сообщение ↔ подписчик
инт_МенеджерПотоковФормированияСообщенийКонтроль фоновых заданий формирования
инт_МенеджерПотоковОтправкиСообщенийКонтроль фоновых заданий отправки

Общие модули (логика)

МодульНазначение
инт_ФормированиеИсходящихСообщенийЗапуск потоков формирования
инт_ОтправкаИсходящихСообщенийЗапуск потоков отправки
инт_ВалидаторПакетовВалидация по OpenAPI-схемам
инт_КоннекторHTTPHTTP-клиент для отправки

Жизненный цикл сообщения

┌─────────┐    ┌────────────────┐    ┌──────────────┐    ┌──────────────────┐
│  Новый  │───▶│ Формирование   │───▶│ Готово к     │───▶│ Помещено в       │
│         │    │ сообщения      │    │ отправке     │    │ очередь отправки │
└─────────┘    └────────────────┘    └──────────────┘    └────────┬─────────┘
                      │                                           │
                      ▼                                           ▼
              ┌────────────────┐                         ┌────────────────┐
              │ Ошибка         │                         │ В процессе     │
              │ формирования   │                         │ отправки       │
              └────────────────┘                         └────────┬───────┘

                                                    ┌─────────────┴─────────────┐
                                                    ▼                           ▼
                                           ┌────────────────┐          ┌────────────────┐
                                           │  Отправлено    │          │  Ошибка        │
                                           │                │          │  отправки      │
                                           └────────────────┘          └────────────────┘

Следующие шаги

Документация подсистемы интеграции