703.86K
Категория: ПрограммированиеПрограммирование

Прием сообщений от внешней системы по транспорту Кафки

1.

План презентации
• Цели презентации
• Цели и требования к решению
• Краткая информация по Кафке
• Сравнение запроса и приема данных при взаимодействии с внешней
системой
• Сравнение запроса и приема данных при взаимодействии с эмулятором
внешней системы
• Новые атрибуты систем и сервисов для приема данных
• Настройка систем и сервисов для приема по Кафке
• Проведение эмуляции приема по Кафке
• Сохранение и визуализация запросов от внешней системы по Кафке
• Задачи в работе

2.

Цели презентации
Предоставить информацию о концептуальных решениях по приему
данных от внешней системы и по возможности эмулировать
процесс приема данных, а также продемонстрировать решение на
примере транспорта Кафки.

3.

Цели и требования к решению
Цель решения - возможность принимать сообщения от внешней
системы по транспорту Кафки.
Основные требования:
• Разработка универсальной компоненты
дизайнера, принимающей запрос от Кафки
• Настройка систем и сервисов для приема по Кафке
• Эмуляция приема сообщения от внешней системы по Кафке
• Сохранение запросов в коллекцию и визуализация этих
запросов
• Развертывание на сервере

4.

Краткая информация по Кафке
В wiki в том же разделе разместил отличную презентацию
Константина Мартынова по Кафке.

5.

Сравнение запроса и приема данных при
взаимодействии с внешней системой

6.

Диаграмма запроса данных у внешней системы

7.

8.

Сравнение запроса и приема данных
при взаимодействии с внешней системой
Различия:
• Для приема необходима принимающая компонента(indbokafka.js)
• Метод sendSyncRequestUni в случае приема заменен на метод обработки и больше
не посылает axios запрос, а просто что-то делает с данными, которые пришли.
• Request и Response для приема и запроса имеют взаимообратные смыслы:
request при запросе - это набор параметров, которые мы(dbo) посылаем внешней
системе,
request при приеме - это набор параметров, которые мы(dbo) получаем от
внешней системы. Аналогично с response.
Сходства:
• Метод получения настроек сервиса и метод отправки/приема имеют практически
одинаковый код и смысл и могут быть в дальнейшем заменены на универсальный.
• Исходя из вышестоящего факта, методы трансформации остаются аналогичными в
обоих случаях

9.

Сравнение запроса и приема данных при
взаимодействии с эмулятором внешней
системы

10.

11.

12.

Сравнение запроса и приема данных
при взаимодействии с эмулятором
внешней системы
Различия:
• Для эмуляции при приеме используется компонента emulatorKafka.js.
Она имитирует отправку запроса от внешней системы в топик, который
прослушивает компонента indbokafka.js и принимает наш(dbo) ответ
внешней системе в топик 'emulator'.
• При приеме не приходится подменять ответ внешней системы
(отсутствует метод emulateDboResponse).
Сходства:
• Получение настроек сервиса происходит одним и тем же методом
• Вызывается общий метод emulateDboRequest, который разветвляется в
зависимости от параметра typeAPI
Полезный факт:
На слайде 15 показано еще одно визуальное различие request и response

13.

Новые атрибуты систем и сервисов для
приема данных
Для систем заведены новые атрибуты:
• receivedMethod - метод приема
Для сервисов заведены новые атрибуты:
• receivedMethod - метод приема
• topic - топик отправителя

14.

Настройка систем и сервисов для приема
по Кафке
Системы не имеет обязательных полей для приема по кафке, однако можно указать поля,
которые будут использоваться в случаи их отсутствия у сервиса:
• receivedMethod - Метод приема
• emulator - Эмулятор
• queueIn - Входящая очередь (если отсутствует topic у системы)
Сервисы имеют обязательные поля для приема по кафке:
• typeAPI - Тип интеграции (должно быть значение 'Kafka')
• requestClass (для корректной работы)
• responseClass (для корректной работы)
И не обязательные, если они указаны у системы:
• receivedMethod - Метод приема
• emulator - Эмулятор
• topic - Топик отправителя (необязательно, если у системы заполнено поле queueIn)

15.

Проведение эмуляции приема по Кафке
Для проведения эмуляции у сервиса или системы поле emulator должно быть установлено в
true. Эмуляция происходит с помощью компоненты ExchangeRequest. Пока что в данных
должно быть поле serviceID для корректной работы, в дальнейшем заменим на поле topic.

16.

Сохранение и визуализация запросов от
внешней системы по Кафке
Запросы от внешней системы сохраняются в коллекцию kafkarequest1 (ClassName: KafkaRequest1)
в разделе Разработка => Запросы по кафке в Админской части ДБО.

17.

Задачи в работе
• Развертывание на сервере
• Формат принимаемых сообщений(обсудить)
English     Русский Правила