将端点定义为URI而不是以编程方式定义它时,有什么优缺点?

时间:2013-08-21 15:12:53

标签: apache-camel

请考虑以下事项:

public class MyRouteBuilder extends RouteBuilder {

  @Override
  public void configure() throws Exception {
      FileEndpoint dropLocation = new FileEndpoint();
      dropLocation.setCamelContext(getContext());
      dropLocation.setFile(new File("/data"));
      dropLocation.setRecursive(true);
      dropLocation.setPreMove(".polled");
      dropLocation.setNoop(true);
      dropLocation.setMaxMessagesPerPoll(1);

      from(dropLocation).to(...

public class MyBuilder extends RouteBuilder {

  @Override
  public void configure() throws Exception {
      from("file://data?recursive=true&preMove=.polled&noop=true&maxMessagesPerPoll=1").to(...

以编程方式我获得代码完成等,而使用URI,所有内容都在一行中。这些是唯一的优点/缺点还是有其他人需要考虑?

我看到的所有示例都使用了URI方法 - 这有很强的理由吗?

1 个答案:

答案 0 :(得分:0)

通常您依靠Component来创建Endpoint实例(通过路由定义),但是如果希望与遗留代码集成,通过类结构/实例创建端点等,则可以通过编程方式完成。

总的来说,Camel的一个主要好处是利用它简洁的DSL路由功能来描述一个地方(路线)的流程/交互。路线定义越是程序化,这些定义就越详细/分散......

总的来说,我更喜欢URI方法,因为它更简洁,更容易理解并且很好地在一个地方操纵路线参数......否则,它完全是一个偏好/风格决定。