spring integration dsl flow variables to store&在流程中检索

时间:2018-05-02 15:00:09

标签: spring-integration spring-integration-dsl

我正在寻找一些流量变量,我需要存储像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 :(得分:1)

流程中没有像sa_sigaction这样的抽象。嗯,基本上,在运行时根本没有流。 sa_handler只是一个逻辑容器。更多的是将Spring Integration解决方案视为完全state(除非我们讨论IntegrationFlow)。

然而,有一个解决方案,您可以将任何额外的必需信息与其标题中的消息一起传输。这样您在stateless之前使用aggregator并根据.enrichHeaders()的传播特性,请求标头正在复制到回复消息,因此,它们在下一个流程步骤中可用。< / p>