我在我的应用中使用camel 2.8.4。我的应用程序将从队列接收请求,然后请求将由Validator验证。根据消息的内容,Validator会将请求转发到不同的目的地。 Validator将是一个POJO bean。目的地将从数据库获取(这是必须的)。我更喜欢使用spring dsl for camelContext。
1. I dont know how to write the validator to forward req to destinations.
2. Can we use something similar like this
<to uri='method=getURI() bean='Validator''> in camelContext
<camelContext>
<route id="route-1">
<from uri="mq:queue:QUEUE"/>
<bean ref="Validator" method="validate"/>
<!--i would be great if we can use <to uri="dynamicURI-from-database"> here -->
</route>
</camelContext>
Class Validator{
public void validate(String req){
if (...)
//get uri1 from database
String uri1=getURI(..);
//forward req to uri1
...........
else
//get uri2 from database
String uri2=getURI(...);
//forward req to uri2
...........
}
public String getURI(..){
......
return uri;
}
}
答案 0 :(得分:2)
使用dynamic URI功能在运行时生成URI。您可以调用处理器来交换URI,然后在to子句中使用它。
类似的东西:
process(new Procesor()
public void process(Exchange exchange){
exchange.setHeader("myURI",someURI);
});
和to子句
<to uri="${header.myURI}"/>
答案 1 :(得分:1)
您是否看过动态收件人列表模式:http://camel.apache.org/recipient-list.html?
答案 2 :(得分:0)
如果目标端点是Http API,则可以使用toD。请参考链接:https://camel.apache.org/components/latest/eips/toD-eip.html