Camel:将消息转发到动态目的地(从数据库)



我在应用程序中使用camel 2.8.4。我的应用程序将接收来自队列的请求,然后验证程序将验证该请求。根据消息的内容,验证器将把请求转发到不同的目的地。验证器将是一个POJO bean。目的地将从数据库中获取(这是必须的)。我更喜欢将spring-dsl用于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;
    }

}

使用动态URI功能在运行时生成URI。您可以调用一个处理器,该处理器在交换中设置URI,然后在to子句中使用它。

类似于:

process(new Procesor()
   public void process(Exchange exchange){
          exchange.setHeader("myURI",someURI);
});

以及在条款中

<to uri="${header.myURI}"/>

您看过动态收件人列表模式吗:http://camel.apache.org/recipient-list.html?

如果目标端点是HttpAPI,则可以使用toD。请参阅链接:https://camel.apache.org/components/latest/eips/toD-eip.html

最新更新