【发布时间】:2017-03-07 18:12:40
【问题描述】:
我对 Spring Integration 很陌生。我无法弄清楚如何解决以下情况。
我有两个通道为要发送到 REST 端点的最终消息生成两个关键数据。
- 轮询通道定期生成 OAuth2 令牌并发布(供此通道和其他通道使用)
- 文件监控通道产生payload(从文件中加载payload的内容)
我需要将通道1的token添加到通道2的header中,类似下图:
other channels __ Ch3 (uses token)
subscribed to the --> /
publishing channel --+ -- Ch4 (uses token)
/ \__ Ch5 (uses token)
Ch1 ==> getToken ==> enrich header & publ.
\ Merge
==> Token & ==> Send to endpoint
/ Payload
Ch2 ==> readFile ==> create new Payload
我尝试使用聚合器,但不确定关联策略或发布策略使用什么。
我的问题是:
- 聚合器是否可行? (或者也许还有其他方法?)
- 关于关联/发布策略的任何建议?
任何方向将不胜感激。
这是我目前所拥有的:
<!-- channels -->
<int:channel id="aggregatedMsgOutChannel"/>
<!-- Token messages are published to here -->
<int:publish-subscribe-channel id="tokenInChannel" />
<!-- Message Aggregator -->
<int:aggregator
id="messageAndOauthTokenAggregator"
input-channel="tokenInChannel"
message-store="simpleMessageStore"
ref="oauthTokenAggregator"
method="aggregate"
output-channel="aggregatedMsgOutChannel">
</int:aggregator>
<!-- Define a store for our messages -->
<bean id="simpleMessageStore" class="org.springframework.integration.store.SimpleMessageStore" />
<bean id="oauthTokenAggregator" class="c.s.i.OauthTokenAggregator">
OauthTokenAggregator.java
@Component
public class OauthTokenAggregator{
private static final Logger log = LoggerFactory.getLogger(OauthTokenAggregator.class);
@Aggregator
public Message aggregate(Collection<Message<?>> messages) {
log.debug("aggregating...");
//.... Unsure as to how to fill this section
return new GenericMessage("test");
}
}
【问题讨论】:
标签: java spring spring-integration