Каковы преимущества и недостатки определения маршрутов Camel весной xml? - PullRequest
5 голосов
/ 15 августа 2011

В настоящее время я пытаюсь углубиться в Apache Camel. Как вы знаете, есть как минимум два способа описания маршрутов: Java DSL и XML-конфигурация.

Разработчики Camel рекомендуют использовать Java DSL, потому что он имеет преимущество в том, что он лучше интегрируется в IDE. Еще одним преимуществом является то, что вы можете обогатить Java DSL своим собственным кодом без написания сложных структур классов. Это кажется необходимым, если используется XML-конфигурация.

Как вы думаете, каковы преимущества и недостатки маршрутов, определенных в xml-файле? Когда использовать xml-файлы для определения маршрутов, а когда использовать Java DSL?

Ответы [ 3 ]

6 голосов
/ 16 августа 2011

Это немного зависит от ваших требований, но почти во всех случаях я предпочитаю Java DSL по следующим причинам:

  • более эффективный и гибкий, чем XML
  • меньше перелистываниемежду файлами XML / Java
  • проще для визуализации, управления, обслуживания, отладка , тест (через макет и т. д.)
  • поддержка встроенных процессоров
  • улучшенная интеграция с IDE (завершение и проверка кода)
  • чище, легче следовать примеры
5 голосов
/ 15 августа 2011

Если вы используете Java DSL, вы можете использовать инструменты рефакторинга вашей IDE и проверки времени компиляции.

С другой стороны, если вы используете XML-файлы, вы можете вывести всю верблюжью маршрутизацию и перенаправить вещи без повторного развертывания приложения.

2 голосов
/ 07 марта 2016

Если вы начнете использовать spring, вы, скорее всего, придете к тому моменту, когда вам нужно реализовать процессор или что-то еще.Вам понадобится пользовательский код в какой-то момент.После этого у вас есть смесь java и xml в вашем коде - ужас обслуживания.

рядом с этим java:

  • тип safe
  • compiled

, чтобы получить максимальную отдачу от этого, я бы также предложил минимизировать конфигурацию конечных точек со строками.Поэтому вместо создания и настройки конечных точек следующим образом:

from("file:/someFolder?delete=true")

я предлагаю создать / настроить конечную точку отдельно:

Endpoint fileEndpoint= context.getEndpoint("file:" + folder.getPath(), FileEndpoint.class);
fileEndpoint.setDelete(true);

Это менее подвержено ошибкам, чем возиться со строками.

...