您可以从另一条路由

时间:2015-10-29 04:25:58

标签: apache-camel

我正在实施客户添加方案。输入是客户对象,需要将其发送到一个jms队列以创建客户,然后依次发送到另一个队列以使用第一个系统不支持的某些字段更新客户。两个系统之间存在后台同步,因此在我发送更新请求时,客户已经存在于system2中。我现在遇到的问题是我需要从system1响应中提取客户ID,并用它来扩充system2的客户对象。并且路线应该返回该客户ID。在Camel中这样做的正确方法是什么?

这就是我现在所拥有的:

    from("direct:customerUpdate)
            .multicast(new AggregationStrategy() {
                @Override
                public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
                    if (oldExchange == null) {
                        return newExchange;
                    }
                    return oldExchange;
                }
            })
            .stopOnException()
            .to("direct:addCustomerSystem1", "direct:updateCustomerSystem2")
            .end();

addCustomerSystem1返回客户ID,但不会增加updateCustomerSystem2的客户对象。

1 个答案:

答案 0 :(得分:0)

不要使用多播,而应该使用多播(例如管道和过滤器)或内容丰富。后者允许您在发送到system2之前增加来自system1的响应。