Apache Camel - очень практичная библиотека двигателей правил, которую можно использовать для обработки событий и информации из разных источников. Вы можете передавать сообщения в различных протоколах, таких как виртуальная машина, HTTP, FTP, JMS и даже в файловой системе, и сохранить вашу рабочую логику и разделение логики передачи, что может еще больше сосредоточиться на содержании сообщения.
В этой статье я предоставлю демонстрацию Java Language Apache Camel вход.
Сначала создайте pom.xml проекта Maven.
<? .org/2001/xmlschema-instance "xsi: schemalocation =" http://maven.apache.org/pom/4.0.0http://maven.apache.org/maven- v4_0.xsd "> <stodelversisiinisiinisiinisiinisinision"> 4.0 . Project.build.sourceencoding> utf-8 </project.build.sourceencoding> <camel.version> 2.11.1 </camel.version> </свойства> ency> <groupid> org.apache.camel </Groupid> < Artifactid> Camel-Core </artifactid> <sersion> $ {camel.version} </version> </dependency> <зависимость> org.slf4j </groupid> <arttifactid> slf4j-simple </artifactid> <serse> 1.7 .5 </version> </dependency> </dependencies> </project>Здесь мы используем только пакет Camel-core.jar, на самом деле он предоставляет много практических компонентов, которые вы можете использовать. Для целей записей журнала я использовал SLF4J-Simple в качестве реализации записи журнала, чтобы мы могли увидеть вывод из консоли.
Затем нам нужно только построить класс маршрутизации. Маршруты определяются тем, как перенести сообщение с одного конца к другому концу. Мы создадим файлы src/main/java/camelcoredemo/timerroutebuilder.java, отправлять сообщение в процессор каждую секунду и печатать просто.
Пакет CamelCoremo; from ("time: // timer1? pery = 1000") .process (new Processor () {public void Process (Exchange msg) {log.info ("Обработка {}", msg);}});}}Выше всего необходимо для этого примера, а теперь компилируется и запустите.
Bash> mvn compilebash> mvn exec: java -dexec.mainclass = org.apache.camel.main.main -dexec.args = '-r camelcoremoroutebuilder'
Обратите внимание, что мы не написали главный вход класса Java.
Управление CamelContext
Когда верблюд запускается, он создаст объект CamelContext, который содержит много информации о том, как запустить Camel, а также включает определение маршрута, которое мы создали. Теперь, если вы хотите получить больше контроля через CamelContext, вам нужно написать свой основной код. Я здесь простой пример.
Пакет Camelcoremo; Статический void main (string [] args) выбрасывает исключение {new Timers () ); ;Видно, что мы повторно использовали существующий класс Timerroutebuilder в методе Creteroutebuilder (). Теперь наш основной класс полностью контролировался, когда он создается, запускается и остановил CamelContext. Context (CamelContext) объект позволяет вам контролировать, как настроить CAMEL в глобальном, а не на уровне маршрута. Его ссылка на Javadoc дает все методы сеттера, и вы можете изучить, что он может сделать.
Обратите внимание, что нам также необходимо предоставить небольшое количество кода в нашей основной категории. Прежде всего, нам нужно справиться с проблемой элегантного закрытия, поэтому мы добавили функцию закрытия Java, чтобы вызвать метод Stop () контекста. Во -вторых, после начала контекста нам нужно добавить блок потока. Если вы не заблокируете свой основной поток после запуска, то он просто выйдет после запуска, и это будет бесполезно. Вы будете запускать Camel как сервис (например, сервер), пока не нажмете клавишу Ctrl+C, чтобы завершить процесс.
Улучшить основной класс, который начинает запускать CamelContext
Если вы не хотите обрабатывать код настройки основного класса так же, как приведенный выше пример, вы можете просто наследовать org.apache. Используя этот класс, вы можете не только разрешить автоматически устанавливать свой контекст, но и получить все дополнительные характеристики командной строки, например, как долго работает процесс управления, позволяет отслеживать, загружать пользовательский класс маршрутов и так далее.
Реконструируйте следующий пример, код выглядит следующим образом:
Пакет Caredemo; Статический void main (string [] args) выбрасывает исключение {timermain2 main = new timermain2 (); ;}} Теперь код Timermain2 меньше, чем раньше, вы можете попробовать его, он должен быть таким же, как и предыдущие функции.
Bash> mvn compilebash> mvn exec: java -dexec.mainclass = camelcoremo.timermain2 -dexec.args = '-t'
Обратите внимание, что после того, как мы даем опцию -T, отслеживание маршрутов будет зарезервировано. Использовать -h увидит все доступные варианты.
Добавить боб с механизмом регистрации верблюда
В предыдущем примере TimerrouteBuilder мы создали анонимный процесс в коде. Теперь, если вы хотите собрать несколько разных прокурсеров, добавление бобов к добавлению механизма регистрации верблюда лучше уменьшит путаницу кода. Camel позволяет вам использовать обработку в качестве бобов в свой реестр, и тогда вам нужно только назвать их компонентами фасоли. Ниже приводится мой код реконструкции:
Пакет Caredemo; Статическая void main (string [] args) выбрасывает исключение {timerbeansmain main = new Timerbeansmain (); ()); = 1000 ") .to (" bean: processbybean1 ") .to (" bean: processagainbybean2 "); ents processor {public void Process (Exchange msg) {log.info (" первый процесс {} ", msg);}}}}}}}}}} Статический класс Bean2 реализует процессор {public void Process (Exchange MSG) {log.info ("Sec ond Process {}", MSG);}}}Теперь класс маршрута более краткий и ясный, и в то же время код обработки также был реконструирован в независимый класс. Когда вам нужно написать очень сложный путь для достижения бизнес -логики, этот метод может помочь вам лучше организовать и проверить ваш код. Это позволяет вам построить фасоль Pojo, который можно использовать повторно, как «Lego». Пространство реестра Camel также может использоваться для многих других видов использования.
Приведенный выше пример маршрута состоит из SO -DSL, его читаемость высока.
Я надеюсь, что эта статья поможет вам пропустить этап исследования верблюда.