from("servlet:///?matchOnUriPrefix=true")
.process(customProcessor)
.choice()
.when(simple("${in.headers.ARestURN} contains ${in.headers.CamelHttpUri}"))
.to("http4://" + AUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false")
.when(simple("${in.headers.BRestURN} contains ${in.headers.CamelHttpUri}"))
.to("http4://" + BUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false")
.otherwise()
.to("http4://" + DUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false");
我现在的问题是,我需要服务一个REST url请求,它要求我acccess、AUrl和BUrl并聚合结果,然后响应请求,我如何实现这一点?
我想写一些如下的东西
from("servlet:///?matchOnUriPrefix=true")
.process(customProcessor)
.choice()
.when(simple("${in.headers.ARestURN} contains ${in.headers.CamelHttpUri}"))
.to("http4://" + AUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false")
.when(simple("${in.headers.BRestURN} contains ${in.headers.CamelHttpUri}"))
.to("http4://" + BUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false")
.when(simple("${in.headers.MultiModuleRestURN} contains ${in.headers.CamelHttpUri}"))
.to("direct:multimodule")
.otherwise()
.to("http4://" + DUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false");
from("direct:multimodule")
.process(new MyProcessor())
.to("http4://" + AUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false");
但是我不知道如何从第一个“aurl”(这是一个返回json结果的REST服务)获得结果,并对它进行一些处理,将结果的特定值提供给下一个url(即BUrl)以从中获得结果,并对其进行处理,合并结果,然后将其发送回调用服务。
the REST call : /AB/123/getPrice
Need to pass 123 to Module A - REST call -> /A/123/getId response-{A: 123, id: x1}
Need to pass x1 to Module B - REST call -> /B/x1/getPrice response-{id: x1, p:$10}
Need to return to caller {name: 123, id: x1, price: $10 } (json combined object)
from("servlet:///?matchOnUriPrefix=true")
.process(customProcessor)
.choice()
.when(simple("${in.headers.multiRestURN} contains ${in.headers.CamelHttpUri}"))
.to("direct:multimodule")
.when(simple("${in.headers.ARestURN} contains ${in.headers.CamelHttpUri}"))
.to("http4://" +AUrl)
.when(simple("${in.headers.BRestURN} contains ${in.headers.CamelHttpUri}"))
.to("http4://" +BUrl)
.otherwise()
.to("http4://" +DUrl);
//
from("direct:multimodule")
.to(ExchangePattern.InOut,"http4://"+AUrl)
.convertBodyTo(String.class)
.process(customAProcess)
.to(ExchangePattern.InOut, "http4://"+BUrl+"/resources")
.convertBodyTo(String.class)
.process(customBProcessor);
所以当BUrl请求得到结果时,这些数据是可用的,我向BUrl发送了不必要的数据,但这有望解决这个问题,也许当我有时间时,我会研究丰富和聚合的策略来解决这个问题。
Enricher组件可能是您正在寻找的。它是一种常见模式的实现。请注意,可以通过strategyRef参数传递聚合策略的实现。
当为第一次rest调用实现聚合策略时,您可以通过第一次rest响应返回的数据来丰富原始交换-请参见AggregationStrategy的界面。只需创建策略的bean并配置Enricher。
希望能有所帮助。示例上下文:):
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="servlet:///?matchOnUriPrefix=true"/>
<enrich uri="http4://serviceA" strategyRef="strategyA"/>
<enrich uri="http4://serviceB" strategyRef="strategyB"/>
</route>
</camelContext>
<bean id="strategyA" class="..." />
<bean id="strategyB" class="..." />
Velocity 不依赖 jQuery Velocity.js 可以在不引入 jQuery 的情况下单独使用。如果 你需要大部分动画效果能兼容 IE8,就必须引入 jQuery 1×。 它也可以和 Zepto 一起使用,写法和 jQuery 一样: // 无 jQuery 或 Zepto 时,Velocity()方法挂载在 window 对象上 (window.velocity) // ( 第一
本文向大家介绍android-gradle 模块依赖,包括了android-gradle 模块依赖的使用技巧和注意事项,需要的朋友参考一下 示例 在多项目中gradle build,您可以与构建中的另一个模块具有依赖关系。 例: 该compile project(':mylibrary')行将名为“ mylibrary”的本地Android库模块声明为依赖项,并要求构建系统在构建应用程序时编译并包
让我们创建一个名为的新模块,并在那里定义CounterService。 app/shared/shared.module.ts 现在我们将引入 SharedModule 到AppModule 和中。 app/lazy/lazy.module.ts 使用此配置,两个模块的组件都可以访问CounterService。 我们将以完全相同的方式在EagerComponent和LazyComponent中使
在使用Maven一段时间后,我对Maven在构建体系结构中带来的许多特性感到兴奋,尤其是依赖项管理。然而,我一次又一次地遇到了一个问题--Maven如何解决多模块项目之间的依赖关系。我想知道这是否是当前Maven实现的大缺陷和/或是否有任何令人满意的解决方案。 假设我有一个多模块的Maven项目。父pom包含三个模块--moduleA(jar)、moduleB(jar)和moduleC(war)。
在php 5.1中, 扩展之间的内部依赖是可以强制性的. 由于扩展可以静态构建到php中, 也可以构建为共享对象动态加载, 因此强制依赖需要在两个地方实现. 配置时模块依赖 第一个位置是你在本章课程中刚刚看到的config.m4文件中. 你可以使用PHP_ADD_EXTENSION_DEP(extname, depname[ , optional])宏标识extname这个扩展依赖于depname
下面的章节提供所有 Jersey 模块和与各自的二进制文件链接的依赖关系的概述(点击模块名称可以得到下载该模块的链接)。(译者注:下面的列表就不翻译了)<br>