Обзор архитектуры
Подсистема интеграции реализует паттерн Message Queue (очередь сообщений) для надёжного обмена данными между 1С и внешними системами.
Основные принципы
- Асинхронность — регистрация сообщения отделена от его формирования и отправки
- Надёжность — сообщения хранятся в очереди до успешной доставки
- Отслеживаемость — полная история статусов каждого сообщения
- Расширяемость — произвольные обработчики и множество типов подписчиков
Архитектурная диаграмма
┌──────────────────────────────────────────────────────────────────────────────┐
│ ИСХОДЯЩИЙ ПОТОК │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌──────────────────┐ ┌──────────────────────────┐ │
│ │ Триггер │ │ Регистрация │ │ Очередь исходящих │ │
│ │ события │───▶│ сообщения │───▶│ сообщений │ │
│ │ │ │ │ │ (инт_ОчередьИсходящих... │ │
│ └─────────────┘ └──────────────────┘ └────────────┬─────────────┘ │
│ │ │
│ ┌───────────────────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ РЕГЛАМЕНТНОЕ ЗАДАНИЕ │ │
│ │ Менеджер потоков формирования │ │
│ └───────────────────────────────┬──────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Фоновое задание #1 │ │ Фоновое задание #N │ │
│ │ Формирование │ │ Формирование │ │
│ │ сообщений │ │ сообщений │ │
│ └─────────┬───────────┘ └──────────┬──────────┘ │
│ │ │ │
│ └─────────────┬─────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ Поток данных (инт_ПотокиДанных) │ │
│ │ ├─ Обработчик (BSL-код) │ │
│ │ ├─ Валидация (OpenAPI Schema) │ │
│ │ └─ Подписчики (ТЧ ПодписчикиПотока) │ │
│ └───────────────────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ Очередь отправки (инт_ОчередьОтправкиИсходящихСообщений) │ │
│ │ Сообщение × Подписчик │ │
│ └───────────────────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ РЕГЛАМЕНТНОЕ ЗАДАНИЕ │ │
│ │ Менеджер потоков рассылки │ │
│ └───────────────────────────┬──────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────────┐ │
│ │ Подписчик HTTP │ │ Подписчик MQ │ │ Подписчик Kafka │ │
│ │ (REST API) │ │ (RabbitMQ) │ │ │ │
│ └────────┬─────────┘ └────────┬─────────┘ └────────────┬─────────────┘ │
│ │ │ │ │
└───────────┼─────────────────────┼─────────────────────────┼────────────────┘
│ │ │
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Внешняя │ │ Брокер │ │ Kafka │
│ система │ │ RabbitMQ │ │ Cluster │
└────────────┘ └────────────┘ └────────────┘Ключевые объекты метаданных
Справочники (конфигурация)
| Объект | Назначение |
|---|---|
инт_ПотокиДанных | Определение потоков: направление, обработчик, валидация |
инт_Подписчики | Базовый справочник подписчиков |
инт_ПодписчикиHTTP | HTTP-подписчики с настройками endpoint |
инт_ПодписчикиRabbitMQ | Подписчики RabbitMQ |
инт_ПодписчикиKafka | Подписчики Apache Kafka |
инт_ПодписчикиJRPC | Подписчики JSON-RPC 2.0 |
инт_Схемы | Схемы валидации (OpenAPI 3.0) |
инт_Эндпоинты | Настройки подключения к внешним системам |
Регистры сведений (данные)
| Объект | Назначение |
|---|---|
инт_ОчередьИсходящихСообщений | Очередь сообщений к отправке |
инт_ОчередьВходящихСообщений | Очередь входящих сообщений |
инт_ТекущийСтатусИсходящихСообщений | Актуальный статус каждого сообщения |
инт_ИсторияСтатусовИсходящихСообщений | Полная история изменения статусов |
инт_ОчередьОтправкиИсходящихСообщений | Связь сообщение ↔ подписчик |
инт_МенеджерПотоковФормированияСообщений | Контроль фоновых заданий формирования |
инт_МенеджерПотоковОтправкиСообщений | Контроль фоновых заданий отправки |
Общие модули (логика)
| Модуль | Назначение |
|---|---|
инт_ФормированиеИсходящихСообщений | Запуск потоков формирования |
инт_ОтправкаИсходящихСообщений | Запуск потоков отправки |
инт_ВалидаторПакетов | Валидация по OpenAPI-схемам |
инт_КоннекторHTTP | HTTP-клиент для отправки |
Жизненный цикл сообщения
┌─────────┐ ┌────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Новый │───▶│ Формирование │───▶│ Готово к │───▶│ Помещено в │
│ │ │ сообщения │ │ отправке │ │ очередь отправки │
└─────────┘ └────────────────┘ └──────────────┘ └────────┬─────────┘
│ │
▼ ▼
┌────────────────┐ ┌────────────────┐
│ Ошибка │ │ В процессе │
│ формирования │ │ отправки │
└────────────────┘ └────────┬───────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌────────────────┐ ┌────────────────┐
│ Отправлено │ │ Ошибка │
│ │ │ отправки │
└────────────────┘ └────────────────┘Следующие шаги
- Потоки данных — подробнее о конфигурации потоков
- Подписчики — типы и настройка подписчиков
- Валидация — работа с OpenAPI-схемами
- Многопоточность — параллельная обработка