±à¼ÍƼö: |
±¾ÎÄÓÉbigtiger02, jadic·Ò룬±¾ÎĽ«ÒÔÒ»¸ö°¸Àý£¬Îª´ó¼ÒÌṩһ¸öJavaÓïÑÔ£¨·ÇGroovy£©µÄApache CamelÈëÃÅÑÝʾ¡£ |
|
Apache CamelÊÇÒ»¸ö·Ç³£ÊµÓõĹæÔòÒýÇæ¿â£¬Äܹ»ÓÃÀ´´¦ÀíÀ´×ÔÓÚ²»Í¬Ô´µÄʼþºÍÐÅÏ¢¡£Äã¿ÉÒÔÔÚʹÓò»Í¬µÄÐÒé±ÈÈçVM£¬HTTP£¬FTP£¬JMSÉõÖÁÊÇÎļþϵͳÖÐÀ´´«µÝÏûÏ¢£¬²¢ÇÒÈÃÄãµÄ²Ù×÷Âß¼ºÍ´«µÝÂß¼±£³Ö·ÖÀ룬ÕâÄܹ»ÈÃÄã¸üרעÓÚÏûÏ¢µÄÄÚÈÝ¡£
ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒ½«Ìṩһ¸öJavaÓïÑÔ£¨·ÇGroovy£©µÄApache CamelÈëÃÅÑÝʾ¡£
Ê×ÏÈ´´½¨Ò»¸öMavenÏîÄ¿µÄpom.xml¡£
- < xml version="1.0" encoding="UTF-8" >
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>camel-spring-demo</groupId>
- <artifactId>camel-spring-demo</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>jar</packaging>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <camel.version>2.11.1</camel.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core</artifactId>
- <version>${camel.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.7.5</version>
- </dependency>
- </dependencies>
-
- </project>
|
ÔÚÕâÀïÎÒÃÇÖ»Óõ½ÁËcamel-core.jar°ü£¬Êµ¼ÊÉÏËüÌṩÁËÐí¶àÄã¿ÉÄÜÓõ½µÄʵÓÃ×é¼þ¡£³öÓÚÈÕÖ¾¼Ç¼µÄÄ¿µÄ£¬ÎÒʹÓÃÁËslf4j-simpleÀ´×÷ΪÈÕÖ¾¼Ç¼µÄʵÏÖ£¬´Ó¶øÎÒÃÇ¿ÉÒÔ´Ó¿ØÖÆÌ¨ÉÏ¿´µ½Êä³ö¡£
½ÓÏÂÀ´ÎÒÃÇÖ»ÐèÒª¹¹ÔìÒ»¸ö·ÓÉÀࡣ·ÓɾͺñÈÊÇCamelÖÐÔõÑù½«ÏûÏ¢´ÓÒ»¶Ë´«µÝµ½ÁíÒ»¶ËµÄÒ»¸öÖ¸ÁÒå¡£ÎÒÃǽ«»á´´½¨src/main/java /camelcoredemo/TimerRouteBuilder.javaÎļþ£¬Ã¿¸ôÒ»ÃëÏò´¦ÀíÆ÷·¢ËÍÒ»¸öÏûÏ¢£¬¼òµ¥´òÓ¡³öÀ´¡£
- package camelcoredemo;
-
- import org.slf4j.*;
- import org.apache.camel.*;
- import org.apache.camel.builder.*;
-
- public class TimerRouteBuilder extends RouteBuilder {
- static Logger LOG = LoggerFactory.getLogger(TimerRouteBuilder.class);
- public void configure() {
- from("timer://timer1 period=1000")
- .process(new Processor() {
- public void process(Exchange msg) {
- LOG.info("Processing {}", msg);
- }
- });
- }
- }
|
ÒÔÉϾÍÊÇÕâ¸öʾÀýµÄÈ«²¿ËùÐ裬ÏÖÔÚ±àÒëÔËÐС£
- bash> mvn compile
- bash> mvn exec:java -Dexec.mainClass=org.apache.camel.main.Main -Dexec.args='-r camelcoredemo.TimerRouteBuilder'
|
×¢Ò⣬ÕâÀïÎÒÃDz¢Ã»ÓбàдJavaÀàµÄmainÈë¿Ú£¬ÎÒÃÇÖ»Êǽ«RouteBuilderµÄÀàÃûµ±×÷²ÎÊý¼òµ¥´«µÝ¸ø org.apache.camel.main.Main,È»ºóËü½«×Ô¶¯¼ÓÔØÂ·ÓÉ¡£
¿ØÖÆCamelContext
µ±Æô¶¯Camelºó£¬Ëü»á´´½¨Ò»¸öCamelContext¶ÔÏ󣬸öÔÏóÓµÓÐÁËºÜ¶à¹ØÓÚÈçºÎÔËÐÐCamelµÄÐÅÏ¢£¬»¹°üº¬ÎÒÃÇËù´´½¨µÄRouteµÄ¶¨Òå¡£ÏÖÔÚÈç¹ûÄãÏëͨ¹ýCamelContext»ñµÃ¸ü¶àµÄ¿ØÖÆ£¬ÄÇôÄãÐèÒª±àд×Ô¼ºµÄÖ÷Àà´úÂë¡£ÎÒÔÚÕâ¾Ù¸ö¼òµ¥µÄÀý×Ó¡£
- package camelcoredemo;
- import org.slf4j.*;
- import org.apache.camel.*;
- import org.apache.camel.impl.*;
- import org.apache.camel.builder.*;
- public class TimerMain {
- static Logger LOG = LoggerFactory.getLogger(TimerMain.class);
- public static void main(String[] args) throws Exception {
- new TimerMain().run();
- }
- void run() throws Exception {
- final CamelContext camelContext = new DefaultCamelContext();
- camelContext.addRoutes(createRouteBuilder());
- camelContext.setTracing(true);
- camelContext.start();
-
- Runtime.getRuntime().addShutdownHook(new Thread() {
- public void run() {
- try {
- camelContext.stop();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- waitForStop();
- }
- RouteBuilder createRouteBuilder() {
- return new TimerRouteBuilder();
- }
- void waitForStop() {
- while (true) {
- try {
- Thread.sleep(Long.MAX_VALUE);
- } catch (InterruptedException e) {
- break;
- }
- }
- }
- }
|
¿ÉÒÔ¿´µ½£¬ÎÒÃÇÔÚcreateRouteBuilder()·½·¨ÖÐÖØÓÃÁËÒÑÓеÄTimerRouteBuilderÀà¡£ÏÖÔÚÎÒÃǵÄÖ÷Àà¶ÔÔÚʲôʱºò´´½¨¡¢Æô¶¯¡¢Í£Ö¹CamelContextÓÐÁËÍêÈ«µÄ¿ØÖÆ¡£context(camelContext)¶ÔÏóÔÊÐíÄãÈ«¾ÖÐԵؿØÖÆÈçºÎÅäÖÃCamel£¬¶ø²»ÊÇÔÚ Route¼¶¡£ËüµÄJavaDocÁ´½Ó¸ø³öÁËËùÓÐsetter·½·¨£¬Äã¿ÉÒÔÑо¿ÏÂËü¶¼¿ÉÒÔ×öЩʲô¡£
×¢Òâµ½Ò»µã£¬ÎÒÃÇÒ²ÐèÒªÔÚÎÒÃǵÄÖ÷ÀàÖÐÌṩÉÙÁ¿ÉèÖôúÂë¡£Ê×ÏÈÎÒÃÇÐèÒª´¦ÀíÓÅÑŹرյÄÎÊÌ⣬ËùÒÔÎÒÃÇÔö¼ÓÁËÒ»¸öJava¹Ø±Õ»Øµ÷º¯ÊýÈ¥µ÷ÓÃcontext µÄstop()·½·¨¡£Æä´ÎÔÚcontextÒѾÆô¶¯ºó£¬ÎÒÃÇÐèÒªÔö¼ÓÒ»¸öÏß³Ì×èÈû¡£Èç¹ûÔÚÆô¶¯ºóÄã²»×èÈûÄãµÄÖ÷Ị̈߳¬ÄÇôËü»áÔÚÆô¶¯ºó¾Í¼òµ¥µÄÍ˳öÁË£¬ÄǾÍûɶÓÃÁË¡£Äã»á°ÑCamelÒ»Ö±×÷Ϊһ¸ö·þÎñ(¾ÍÏñÒ»¸ö·þÎñÆ÷)ÔËÐУ¬Ö±ÖÁÄã°´ÏÂCTRL+C¼üÈ¥ÖÕÖ¹¸Ã½ø³Ì¡£
¸ÄÉÆÆô¶¯CamelContextµÄÖ÷Àà
Èç¹ûÄã²»ÏëÏñÉÏÃæÀý×ÓÒ»Ñù¹ý¶àµÄ´¦ÀíÖ÷ÀàÉèÖôúÂ룬ÄÇôÄã¿ÉÒÔ¼òµ¥µØ¼Ì³ÐÓÉcamel-coreÌṩµÄ org.apache.camel.main.MainÀà×÷Ϊ´úÌæ¡£Í¨¹ýÀûÓÃÕâ¸öÀ࣬Äã²»½ö¿ÉÒÔÈÃÄãµÄcontext×Ô¶¯ÉèÖ㬻¹¿ÉÒÔ»ñµÃËùÓи½¼ÓµÄÃüÁîÐÐÌØÐÔ£¬±ÈÈç¿ØÖÆ½ø³ÌÔËÐжà¾Ã£¬ÆôÓÃ×·×Ù£¬¼ÓÔØ×Ô¶¨ÒårouteÀàµÈµÈ¡£
ÖØ¹¹ÁËÏÂÉÏÒ»¸öÀý×Ó£¬´úÂëÈçÏ£º
- package camelcoredemo;
-
- import org.slf4j.*;
- import org.apache.camel.builder.*;
- import org.apache.camel.main.Main;
-
- public class TimerMain2 extends Main {
- static Logger LOG = LoggerFactory.getLogger(TimerMain2.class);
- public static void main(String[] args) throws Exception {
- TimerMain2 main = new TimerMain2();
- main.enableHangupSupport();
- main.addRouteBuilder(createRouteBuilder());
- main.run(args);
- }
- static RouteBuilder createRouteBuilder() {
- return new TimerRouteBuilder();
- }
- }
|
ÏÖÔÚTimerMain2ÀàµÄ´úÂë±È֮ǰµÄ¸üÉÙÁË£¬Äã¿ÉÒÔÊÔÊÔ¿´£¬ËüÓ¦¸ÃºÍ֮ǰµÄ¹¦ÄÜÒ»Ñù¡£
- bash> mvn compile
- bash> mvn exec:java -Dexec.mainClass=camelcoredemo.TimerMain2 -Dexec.args='-t'
|
×¢Òâµ½ÎÒÃǸø³ö-tÑ¡Ïîºó£¬»áת´¢Route×·×Ù¡£Ê¹ÓÃ-h»á¿´µ½ËùÓпÉÓõÄÑ¡Ïî¡£
ÓÃCamelµÄ×¢²á»úÖÆÌí¼Óbean
ÔÚ֮ǰµÄTimerRouteBuilderÀý×ÓÖУ¬ÎÒÃÇÒѾÔÚ´úÂëÖд´½¨ÁËÒ»¸öÄäÃûProcessor¡£ÏÖÔÚÈç¹ûÄãÏ뽫¼¸¸ö²»Í¬µÄProcessor·ÅÔÚÒ»Æð£¬ÄÇôʹÓÃCamelµÄ×¢²á»úÖÆÌí¼ÓbeanµÄ·½Ê½½«ÄܸüºÃµÄ¼õÉÙ´úÂë»ìÂÒ¡£CamelÔÊÐíÄãͨ¹ý½«processingµ±×÷bean×¢Èëµ½ËüµÄ registry space£¬È»ºóÄãÖ»Òª°ÑËüÃǵ±×÷bean×é¼þÀ´½øÐе÷Óá£ÈçÏÂÊÇÎÒµÄÖØ¹¹´úÂë:
- package camelcoredemo;
-
- import org.slf4j.*;
- import org.apache.camel.*;
- import org.apache.camel.builder.*;
- import org.apache.camel.main.Main;
-
- public class TimerBeansMain extends Main {
- static Logger LOG = LoggerFactory.getLogger(TimerBeansMain.class);
- public static void main(String[] args) throws Exception {
- TimerBeansMain main = new TimerBeansMain();
- main.enableHangupSupport();
- main.bind("processByBean1", new Bean1());
- main.bind("processAgainByBean2", new Bean2());
- main.addRouteBuilder(createRouteBuilder());
- main.run(args);
- }
- static RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- public void configure() {
- from("timer://timer1 period=1000")
- .to("bean:processByBean1")
- .to("bean:processAgainByBean2");
- }
- };
- }
-
- // Processor beans
- static class Bean1 implements Processor {
- public void process(Exchange msg) {
- LOG.info("First process {}", msg);
- }
- }
- static class Bean2 implements Processor {
- public void process(Exchange msg) {
- LOG.info("Second process {}", msg);
- }
- }
- }
|
ÏÖÔÚRouteÀà¸ü¼ò½àÃ÷ÁË£¬Í¬Ê±´¦Àí´úÂëÒ²±»Öع¹µ½Á˶ÀÁ¢µÄÀàÖС£µ±ÄãÐèÒª±àдºÜ¸´ÔÓµÄRouteÀ´ÊµÏÖÒµÎñÂ߼ʱ£¬ÕâÖÖ·½Ê½Äܹ»°ïÖúÄã¸üºÃµÄ×éÖ¯ºÍ²âÊÔÄãµÄ´úÂë¡£ËüÄܹ»ÈÃÄã¹¹½¨Ïñ¡±Àָߡ°»ýľÄÇÑù¿É¸´ÓõÄPOJO bean¡£CamelµÄregistry spaceͬÑù¿ÉÓÃÓÚÆäËûºÜ¶àÓÃ;£¬±ÈÈçÄã¿ÉÒÔ×Ô¶¨ÒåÐí¶à¾ßÓи½¼Ó¹¦ÄܵÄendpoint×é¼þ»òÕß×¢²áһЩÐÅÏ¢£¬¸ü»òÕßÌæ»»Ï̳߳ØÊµÏÖ²ßÂÔÖ®ÄÚµÄÊÂÇé¡£
ÉÏÊöRouteʾÀýÊÇÓÃËùνµÄJava DSLÀ´¹¹³ÉµÄ£¬ËüµÄ¿É¶ÁÐԽϸߣ¬Äã¿ÉÒÔÓÃIDEÌṩµÄÖ§³Ö²é¿´ËùÓпÉÓÃÓÚRouteµÄ·½·¨¡£
ÎÒÏ£ÍûÕâÆªÎÄÕÂÄܹ»°ïÖúÄãÌø¹ýCamelµÄÃþË÷½×¶Î¡£³ýÁËÒѾÌáµ½µÄʼþ×é¼þÖ®Í⣬camel»¹ÌṩÁËÈçÏÂ×é¼þ£º
Have fun! |