【问题标题】:Camel: forward message to dynamic destinations (from database)Camel:将消息转发到动态目的地(来自数据库)
【发布时间】:2013-12-27 07:49:29
【问题描述】:

我在我的应用程序中使用骆驼 2.8.4。我的应用程序将接收来自队列的请求,然后该请求将由验证器验证。根据消息的内容,Validator 会将请求转发到不同的目的地。 Validator 将是一个 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;
    }

}

【问题讨论】:

    标签: spring validation apache-camel message


    【解决方案1】:

    只要目标端点是 Http API,您就可以使用 toD。请参考链接:https://camel.apache.org/components/latest/eips/toD-eip.html

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        类似:

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

        在 to 子句中

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-25
          • 1970-01-01
          • 2021-06-07
          • 2019-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多