Механизм рабочего процесса для сценариев обработки исключений и ошибок в Spring Boot или Spring - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю над дизайном, где требования следующие:

  1. Приложение будет создано с использованием пружинной загрузки
  2. Как часть требования, мы должны создать некоторую оркестровку, гдев конечном итоге мы вызовем несколько служб SOAP и REST и выполним агрегацию, преобразование и т. д.
  3. Когда во время оркестровки возникает исключение / ошибка, нам нужно захватить и сохранить состояние и повторить его с той же точкигде произошла ошибка.

Например, допустим, есть метод Java, в котором у нас есть несколько вызовов к внешним компонентам, скажем, 1 вызов мыла и 2 вызова покоя, т.е.

String doOrchestration(InputObject obj){

    Line 1: Object obj = soap call[ input is XML format];

    Line 2: Object obj1 = rest1 call [the input is obj in JSON  format]

    Line 3: Object obj3 = rest2 call[the input is obj1 in JOSN  format]

    //do something
    return str

}

Ошибка произошла в строке 2. Нам нужно захватить / сохранить состояние и продолжить выполнение со строки 2. Позже.

Есть ли какая-либо библиотека рабочего процесса, шаблоны оркестрации и / или структура, которые мы можем интегрировать с пружиной/ Spring-boot

Спасибо,

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Версия Apache Camel, похожая на spring, представляет собой Spring-Integration на https://spring.io/projects/spring-integration

. Apache Camel и Spring Integration реализуют корпоративный шаблон интеграции, называемый EIP.Пожалуйста, сначала посмотрите на https://www.enterpriseintegrationpatterns.com/.Это в основном шаблоны проектирования для рабочего процесса и оркестровки!

У вас есть интеграция (стартер) с пружинной загрузкой, созданной spring с именем spring-boot-starter -gration.

Вероятно, вы должны посмотреть ссылку на Java Spring Config dsl на https://github.com/spring-projects/spring-integration-java-dsl/wiki/spring-integration-java-dsl-reference который покажет вам хороший обзор, с более современным подходом (xml, и аннотация начинает исчезать).

С тем, что вам нужно сделать, вам, вероятно, понадобится https://docs.spring.io/spring-integration/reference/html/ws.html, который является вебрасширение для интеграции пружин.

Будьте осторожны, это очень элегантное решение, но с большой абстракцией и может быть трудным в начале.Имейте в виду, что EIP определяет строительный блок и словарь для создания рабочих процессов, Apache Camel и Spring Integration - это фреймворки, которые реализуют эти строительные блоки и предлагают абстракцию потоковой модели (также абстракция с постоянными очередями), и оба имеют несколько расширений для легкой адаптации этих строительных блоков кнастоящее слово (web, ldap, database, ...)

Обе платформы хороши с плюсами и минусами, но вы, вероятно, предпочтете весеннюю интеграцию в команду Spring экосистемы, те же соглашения, что и другие весенние модули!

Опять же, эти тезисы действительно элегантны, но абстракция всегда стоит затрат!

Отказ от ответственности: я был инструктором по весеннему интеграционному курсу - Официальный

0 голосов
/ 05 февраля 2019

Хорошо, одна технология, которую я использую для решения подобных проблем, - это Apache Camel. С верблюдом вы можете устанавливать маршруты, например, по вашему требованию, вы можете построить основной маршрут, который будет управлять другими маршрутами, такими как ваши конечные точки, еслиу одной конечной точки есть исключение, вы можете вызвать маршрут, который сохранит это, и снова вызвать маршрут конечной точки или что-то в этом роде.

http://camel.apache.org/getting-started.html

edit: у верблюда многоПотенциальные трансформирующие сообщения, такие как json, xml, objects.

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

https://github.com/chill-hub/spring_boot_camel_base_archetype

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