Чтобы сделать его параллельным, вы должны рассмотреть возможность использования ExecutorChannel
между конечными точками:
IntegrationFlows.from(httpInboundGateway)
.channel(c -> c.executor(myTaskExecutor()))
.transform(transformer-rest-api-1)
и т. Д.
Однако, поскольку вы хотели бы иметь опцию персистентности, вам следует рассмотреть возможность использования QueueChannel
с персистентным MessageStore
: https://docs.spring.io/spring-integration/docs/current/reference/html/system-management-chapter.html#message-store. Затем каждая конечная точка должна быть снабжена *Опции 1016 * poller , включая tasExecutor
для параллельной обработки:
.channel(c -> c.queue(jdbcMessageStore(), "queue1Channel"))
.transform(transformer-rest-api-1,
e -> e.poller(p -> p.fixedDelay(100).taskExecutor(myTaskExecutor())))
Для создания конечных точек в качестве REST API вам просто нужно использовать Http.outboundGateway()
.Или для реактивного варианта - WebFlux.outboundGateway()
в .handle()
вместо transform()
.Или просто продолжайте в существующем .handle(http-outbound-gateway-1)
в вашем потоке
Чтобы сделать поток реактивным, вам нужно использовать .channel(c -> c.flux()))
, но вы потеряете настойчивость в этом вопросе.
Для регистрации каждого шага между конечными точками должен быть расположен оператор .log()
.
Ваши требования не ясны, чтобы поделиться некоторымиобразец ...