Emi*_*l C 2 spring spring-integration
我的情况是这样的:我需要将基于邮政编码的邮件路由到三个不同的商店.
为此,我需要查看邮件标题以查找客户的邮政编码,并执行以下计算:
if(zip < 5000)
{
store = "SJ";
}
else if(zip >= 6000)
{
store = "JY";
}
else
{
store = "FY";
}
Run Code Online (Sandbox Code Playgroud)
我已经设法使用以下自定义Transformer来完成它,我用它来丰富消息头:
public class HeaderEnricher {
public Message<?> transform(Message<?> message)
{
int zip = message.getHeaders().get("Customer Zip", Integer.class);
String store;
if (zip < 5000)
{
store = "SJ";
}
else if (zip >= 6000)
{
store = "JY";
}
else
{
store = "FY";
}
Message<?> messageOut = MessageBuilder
.withPayload(message.getPayload())
.copyHeadersIfAbsent(message.getHeaders())
.setHeaderIfAbsent("store", store).build();
return messageOut;
}
}
Run Code Online (Sandbox Code Playgroud)
正如我所说这是有效的,但我想知道如何使用标题扩充器来做同样的事情.我问,因为我希望我的集成图将其说明为一个标题增强器,因为这是我对上述变换器代码的意图.
那可能吗?
你是对的!你可以使用SpEL在没有任何Java代码的情况下完成它:
<int:header-enricher input-channel="inputChannel" output-channel="outputChannel">
<int:header name="store"
expression="headers['Customer Zip'] lt 5000 ? 'SJ' : headers['Customer Zip'] ge 6000 ? 'JY' : 'FY'"/>
</int:header-enricher>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12416 次 |
| 最近记录: |