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)
解决方案
state
在流程中没有这样的抽象。好吧,本质上,运行时根本没有流量。这IntegrationFlow
只是一个逻辑容器。更全面地看待 Spring Integration 解决方案会更好stateless
(除非我们谈论一个aggregator
)。
尽管如此,还是有一个解决方案适合您,例如将任何额外的必需信息连同其标题中的消息一起传输。通过这种方式,您在使用.enrichHeaders()
之前.handle()
并根据 的传播性质ServiceActivator
,请求标头将复制到回复消息,因此,它们在下一个流程步骤中可用。
推荐阅读
- ruby - 如何使用 CURL 从终端发送的自定义标头将数据保存在我的文件中
- wpf - Devexpress:如何在数据模板中访问控制
- mysql - 根据一列 MariaDB 从重复项中获取第一行
- java - 如何在不重复的情况下随机选择泛型类型
- reactjs - .map 不是函数。通过对象数组映射。(反应钩子)
- php - 检查发送的数据是否与行匹配
- graphql - 在节点中为 GraphQL 创建自定义模块?
- php - laravel-如何将交货日期更新到表格和每个项目的状态?
- react-native - expo OTA 会破坏旧版本吗?
- python - 如何将顺序递增的列添加到从 n 开始的 spark 数据帧(PySpark)?