我正在寻找如何处理案件的方向:
我有一个顶级的jaxb Request对象,它可能包含exisisting sessionID属性,或者我需要生成一个。然后,该对象包含要逐个执行的子操作。所以我会在它之后使用分离器。我希望将sessionID值作为带有子操作的后续消息的标题。
在之前的项目中,我首先将请求发送到“会话服务激活器”,然后将其发送到拆分器以生成子操作列表(继承了标头)。这可以在这里工作。 问题:还有另一种方法可以解决这个问题吗?
假设我们有一个操作列表,在第一个操作之后,我想将第一个的结果传递给后续的,如何构造它?
感谢。
[UPDATE] 这是我必须处理的简单层次结构:
RootRequest(会话)
-SubOperation
- 子操作
...
以下是我实施它的方式:
...
<int:chain input-channel="rootRequestChannel"
output-channel="operationSplitterChannel">
<!-- Process top level request-->
<int:service-activator id="rootRequestHandler"
method="process" ref="rootOperationHandler">
</int:service-activator>
<!-- Put session id in header -->
<int:header-enricher>
<int:header
name="#{T(ServicesConstants).SESSION_ID}"
expression="payload.result.session" />
</int:header-enricher>
</int:chain>
<int:splitter input-channel="operationSplitterChannel"
ref="requestSplitter" output-channel="operationFilterChannel" />
<!-- Route the Result of Root Request to aggregator, the rest for processing to subOperataionHandler. -->
<int:filter input-channel="operationFilterChannel" ref="operationFilter"
output-channel="subOperataionHandlerChannel" discard-channel="operationResponseOutputChannel" />
<int:service-activator id="subOperataionHandler"
input-channel="subOperataionHandlerChannel" output-channel="operationResponseOutputChannel"
method="process" ref="subOperationHandler">
</int:service-activator>
<int:aggregator input-channel="operationResponseOutputChannel"
output-channel="primaryResponseChannel" method="aggregate"
ref="responseAggregator">
</int:aggregator>
...
答案 0 :(得分:0)
在这两种情况下,请使用<header-enricher/>
。
首先,在分离器之前;所有拆分消息都将继承所有丰富的标题。
类似地,您可以操纵有效负载和/或标头以向下游元素提供您想要的任何内容。