весенние интеграционные переменные потока dsl для хранения и извлечения в потоке - PullRequest
0 голосов
/ 02 мая 2018

Я ищу некоторые переменные потока, в которых мне нужно хранить значения, такие как orderId, customerId и другие ответы, полученные в потоке, чтобы я мог использовать их в более поздней части потока для написания бизнес-логики.

    .handle(outboundGateway("localhost:8080/order?orderId={orderId}")
                            .uriVariable("orderId", m -> m.getPayload())
                            .httpMethod(HttpMethod.GET)
                            .expectedResponseType(Order.class)

    .handle(outboundGateway("localhost:8080/orderDetails?orderId={orderId}")
                            .uriVariable("orderId", m -> m.getPayload())
                            .httpMethod(HttpMethod.GET)
                            .expectedResponseType(OrderDetails.class)

    .handle(outboundGateway("localhost:8080/customer?customerId={customerId}")
                            .uriVariable("customerId", m -> ((OrderDetails)m.getPayload()).getCustomerId())
                            .httpMethod(HttpMethod.GET)
                            .expectedResponseType(Customer.class)

    .handle(outboundGateway("localhost:8080/customerAddress?addressId={addressId}")
                            .uriVariable("addressId", m -> ((Customer)m.getPayload()).getAdderssId)
                            .httpMethod(HttpMethod.GET)
                            .expectedResponseType(CustomerAddress.class)
    .handle((p, h) -> somebusinesslogic)

1 Ответ

0 голосов
/ 02 мая 2018

В потоке нет такой абстракции, как state. Ну, по сути, нет потока во время выполнения вообще. IntegrationFlow - это просто логический контейнер. Более того, было бы лучше рассмотреть решение Spring Integration как полностью stateless (если мы не говорим о aggregator).

Тем не менее, есть решение для вас, например, передача любой дополнительной информации вместе с сообщением в его заголовках. Таким образом, вы используете .enrichHeaders() до .handle() и в соответствии с характером распространения ServiceActivator заголовки запроса копируются в ответное сообщение и, следовательно, они доступны на следующем шаге потока.

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