Joe*_*013 2 apache-camel jbossfuse apache-servicemix
我的骆驼路线如下(示例)
from (activemq:xyz) --- 从 QUEUE 接收消息
to(smpp:abc) --- 提交消息至 SMSC
to(cxf:hij) --- 基于 SMSC 响应成功调用 Web 服务
我面临的问题如下
我从队列中收到的交换属性/标头很少,但在收到 SMPP 的响应后,我发送的交换标头/属性被清除,无法用于调用 Web 服务。我该怎么做才能保持这些值不变,直到到达路线终点。我无法控制 SMSC 实施,也无法更改 SMSC 响应。我正在使用 SPRING dsl
您可以考虑对 SMPP 部分使用名为Content EnricherAggregationStrategy的企业集成模式,并通过自定义“保留”您的原始交换(包含所有标头和属性),并从任何内容中获取您需要的内容(我猜是正文?)短信中心可以。
from (activemq:xyz)
.enrich(smpp:abc, new PreserveHeadersAndPropertiesAggregationStrategy())
.to(cxf:hij)
;
Run Code Online (Sandbox Code Playgroud)
和
public class PreserveHeadersAndPropertiesAggregationStrategy implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange original, Exchange resource) {
// use body from getIn() or getOut() depending on the exchange pattern...
original.getIn().setBody(resource.getIn().getBody());
original.getOut().setBody(resource.getOut().getBody());
return original;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5715 次 |
| 最近记录: |