так что, конечно, он может быть подключен автоматически.
истемная диаграмма прилагается.
КАК РАБОТАЕТ ПОТОК:
Пружинный поток интеграции читает входные данные из файла json на C: \ и выполняет 2 действия:
Хранить в БД
Уведомить / распечатать пользователю
ВАЖНЫЕ КРИТЕРИИ:
Я хочу, чтобы хранилище в потоке БД не зависело от бизнес-логики (печатать / уведомлять пользователя), то есть БДexception/DB
Успех не должен влиять на уведомление пользователя.
Аналогичным образом уведомление пользователя не должно влиять на поток БД.
Я просмотрел и обнаружил, что должен использовать канал исполнителя для передачи «хранилища в БД» другому потоку.
Я не могу найти пример кода для канала выполнения.Мне нужен только код на основе аннотаций, так как все другие классы основаны на аннотациях.
ЧТО МНЕ НУЖНО: Пример кода ExecutorChannel - на основе аннотации.
Код внутри 2 (читает json из файла и отправляет его в БД, логика собственного бизнеса)
@Bean
public IntegrationFlow readFromJSONFile() {
return IntegrationFlows
.from("/path/to/File")
.transform("Transformer to convert to Bean")
.wireTap(
flow -> flow.handle(msg -> logger
.info("Message sent to common channel: " + msg.getPayload())))
.channel("Common Channel Name")
.get();
}
Код внутри 4:
@Bean
public IntegrationFlow sendToDb() {
return IntegrationFlows
.from("Common Channel Name")
.handle("DAO Impl to store into DB") // I THINK THE MESSAGE SHOULD BE SENT TO AN EXECUTOR CHANNEL TO PROCESS ON A SEPARATE THREAD
.get();
}
Код внутри 5:
@Bean
public IntegrationFlow sendToBusinessLogictoNotifyUser() {
return IntegrationFlows
.from("Common Channel Name")
.handle("Business Logic Class name")
.get();
}
Текущее поведение: Если есть исключение БД, уведомить пользователя также не удается. Вместо этого я хочу, чтобы это вошло спокойно.
НОТА: Мне нужен только пример аннотаций.