Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Õë¶ÔJava¿ª·¢ÕßµÄApache CamelÈëÃÅÖ¸ÄÏ
 
  5140  次浏览      28
 2018-1-19
 
±à¼­ÍƼö:
±¾ÎÄÓÉbigtiger02, jadic·­Ò룬±¾ÎĽ«ÒÔÒ»¸ö°¸Àý£¬Îª´ó¼ÒÌṩһ¸öJavaÓïÑÔ£¨·ÇGroovy£©µÄApache CamelÈëÃÅÑÝʾ¡£

Apache CamelÊÇÒ»¸ö·Ç³£ÊµÓõĹæÔòÒýÇæ¿â£¬Äܹ»ÓÃÀ´´¦ÀíÀ´×ÔÓÚ²»Í¬Ô´µÄʼþºÍÐÅÏ¢¡£Äã¿ÉÒÔÔÚʹÓò»Í¬µÄЭÒé±ÈÈçVM£¬HTTP£¬FTP£¬JMSÉõÖÁÊÇÎļþϵͳÖÐÀ´´«µÝÏûÏ¢£¬²¢ÇÒÈÃÄãµÄ²Ù×÷Âß¼­ºÍ´«µÝÂß¼­±£³Ö·ÖÀ룬ÕâÄܹ»ÈÃÄã¸üרעÓÚÏûÏ¢µÄÄÚÈÝ¡£

ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒ½«Ìṩһ¸öJavaÓïÑÔ£¨·ÇGroovy£©µÄApache CamelÈëÃÅÑÝʾ¡£

Ê×ÏÈ´´½¨Ò»¸öMavenÏîÄ¿µÄpom.xml¡£

  1. < xml version="1.0" encoding="UTF-8" >
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="
  5. http://maven.apache.org/POM/4.0.0
  6. http://maven.apache.org/maven-v4_0_0.xsd">
  7. <modelVersion>4.0.0</modelVersion>
  8. <groupId>camel-spring-demo</groupId>
  9. <artifactId>camel-spring-demo</artifactId>
  10. <version>1.0-SNAPSHOT</version>
  11. <packaging>jar</packaging>
  12. <properties>
  13. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14. <camel.version>2.11.1</camel.version>
  15. </properties>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.apache.camel</groupId>
  19. <artifactId>camel-core</artifactId>
  20. <version>${camel.version}</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.slf4j</groupId>
  24. <artifactId>slf4j-simple</artifactId>
  25. <version>1.7.5</version>
  26. </dependency>
  27. </dependencies>
  28. </project>

ÔÚÕâÀïÎÒÃÇÖ»Óõ½ÁËcamel-core.jar°ü£¬Êµ¼ÊÉÏËüÌṩÁËÐí¶àÄã¿ÉÄÜÓõ½µÄʵÓÃ×é¼þ¡£³öÓÚÈÕÖ¾¼Ç¼µÄÄ¿µÄ£¬ÎÒʹÓÃÁËslf4j-simpleÀ´×÷ΪÈÕÖ¾¼Ç¼µÄʵÏÖ£¬´Ó¶øÎÒÃÇ¿ÉÒÔ´Ó¿ØÖÆÌ¨ÉÏ¿´µ½Êä³ö¡£

½ÓÏÂÀ´ÎÒÃÇÖ»ÐèÒª¹¹ÔìÒ»¸ö·ÓÉÀࡣ·ÓɾͺñÈÊÇCamelÖÐÔõÑù½«ÏûÏ¢´ÓÒ»¶Ë´«µÝµ½ÁíÒ»¶ËµÄÒ»¸öÖ¸ÁÒå¡£ÎÒÃǽ«»á´´½¨src/main/java /camelcoredemo/TimerRouteBuilder.javaÎļþ£¬Ã¿¸ôÒ»ÃëÏò´¦ÀíÆ÷·¢ËÍÒ»¸öÏûÏ¢£¬¼òµ¥´òÓ¡³öÀ´¡£

  1. package camelcoredemo;
  2. import org.slf4j.*;
  3. import org.apache.camel.*;
  4. import org.apache.camel.builder.*;
  5. public class TimerRouteBuilder extends RouteBuilder {
  6. static Logger LOG = LoggerFactory.getLogger(TimerRouteBuilder.class);
  7. public void configure() {
  8. from("timer://timer1 period=1000")
  9. .process(new Processor() {
  10. public void process(Exchange msg) {
  11. LOG.info("Processing {}", msg);
  12. }
  13. });
  14. }
  15. }

ÒÔÉϾÍÊÇÕâ¸öʾÀýµÄÈ«²¿ËùÐ裬ÏÖÔÚ±àÒëÔËÐС£

  1. bash> mvn compile
  2. 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»ñµÃ¸ü¶àµÄ¿ØÖÆ£¬ÄÇôÄãÐèÒª±àд×Ô¼ºµÄÖ÷Àà´úÂë¡£ÎÒÔÚÕâ¾Ù¸ö¼òµ¥µÄÀý×Ó¡£

  1. package camelcoredemo;
  2. import org.slf4j.*;
  3. import org.apache.camel.*;
  4. import org.apache.camel.impl.*;
  5. import org.apache.camel.builder.*;
  6. public class TimerMain {
  7. static Logger LOG = LoggerFactory.getLogger(TimerMain.class);
  8. public static void main(String[] args) throws Exception {
  9. new TimerMain().run();
  10. }
  11. void run() throws Exception {
  12. final CamelContext camelContext = new DefaultCamelContext();
  13. camelContext.addRoutes(createRouteBuilder());
  14. camelContext.setTracing(true);
  15. camelContext.start();
  16. Runtime.getRuntime().addShutdownHook(new Thread() {
  17. public void run() {
  18. try {
  19. camelContext.stop();
  20. } catch (Exception e) {
  21. throw new RuntimeException(e);
  22. }
  23. }
  24. });
  25. waitForStop();
  26. }
  27. RouteBuilder createRouteBuilder() {
  28. return new TimerRouteBuilder();
  29. }
  30. void waitForStop() {
  31. while (true) {
  32. try {
  33. Thread.sleep(Long.MAX_VALUE);
  34. } catch (InterruptedException e) {
  35. break;
  36. }
  37. }
  38. }
  39. }

¿ÉÒÔ¿´µ½£¬ÎÒÃÇÔÚ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ÀàµÈµÈ¡£

ÖØ¹¹ÁËÏÂÉÏÒ»¸öÀý×Ó£¬´úÂëÈçÏ£º

  1. package camelcoredemo;
  2. import org.slf4j.*;
  3. import org.apache.camel.builder.*;
  4. import org.apache.camel.main.Main;
  5. public class TimerMain2 extends Main {
  6. static Logger LOG = LoggerFactory.getLogger(TimerMain2.class);
  7. public static void main(String[] args) throws Exception {
  8. TimerMain2 main = new TimerMain2();
  9. main.enableHangupSupport();
  10. main.addRouteBuilder(createRouteBuilder());
  11. main.run(args);
  12. }
  13. static RouteBuilder createRouteBuilder() {
  14. return new TimerRouteBuilder();
  15. }
  16. }

ÏÖÔÚTimerMain2ÀàµÄ´úÂë±È֮ǰµÄ¸üÉÙÁË£¬Äã¿ÉÒÔÊÔÊÔ¿´£¬ËüÓ¦¸ÃºÍ֮ǰµÄ¹¦ÄÜÒ»Ñù¡£

  1. bash> mvn compile
  2. 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×é¼þÀ´½øÐе÷Óá£ÈçÏÂÊÇÎÒµÄÖØ¹¹´úÂë:

  1. package camelcoredemo;
  2. import org.slf4j.*;
  3. import org.apache.camel.*;
  4. import org.apache.camel.builder.*;
  5. import org.apache.camel.main.Main;
  6. public class TimerBeansMain extends Main {
  7. static Logger LOG = LoggerFactory.getLogger(TimerBeansMain.class);
  8. public static void main(String[] args) throws Exception {
  9. TimerBeansMain main = new TimerBeansMain();
  10. main.enableHangupSupport();
  11. main.bind("processByBean1", new Bean1());
  12. main.bind("processAgainByBean2", new Bean2());
  13. main.addRouteBuilder(createRouteBuilder());
  14. main.run(args);
  15. }
  16. static RouteBuilder createRouteBuilder() {
  17. return new RouteBuilder() {
  18. public void configure() {
  19. from("timer://timer1 period=1000")
  20. .to("bean:processByBean1")
  21. .to("bean:processAgainByBean2");
  22. }
  23. };
  24. }
  25. // Processor beans
  26. static class Bean1 implements Processor {
  27. public void process(Exchange msg) {
  28. LOG.info("First process {}", msg);
  29. }
  30. }
  31. static class Bean2 implements Processor {
  32. public void process(Exchange msg) {
  33. LOG.info("Second process {}", msg);
  34. }
  35. }
  36. }

ÏÖÔÚRouteÀà¸ü¼ò½àÃ÷ÁË£¬Í¬Ê±´¦Àí´úÂëÒ²±»Öع¹µ½Á˶ÀÁ¢µÄÀàÖС£µ±ÄãÐèÒª±àдºÜ¸´ÔÓµÄRouteÀ´ÊµÏÖÒµÎñÂß¼­Ê±£¬ÕâÖÖ·½Ê½Äܹ»°ïÖúÄã¸üºÃµÄ×éÖ¯ºÍ²âÊÔÄãµÄ´úÂë¡£ËüÄܹ»ÈÃÄã¹¹½¨Ïñ¡±Àָߡ°»ýľÄÇÑù¿É¸´ÓõÄPOJO bean¡£CamelµÄregistry spaceͬÑù¿ÉÓÃÓÚÆäËûºÜ¶àÓÃ;£¬±ÈÈçÄã¿ÉÒÔ×Ô¶¨ÒåÐí¶à¾ßÓи½¼Ó¹¦ÄܵÄendpoint×é¼þ»òÕß×¢²áһЩÐÅÏ¢£¬¸ü»òÕßÌæ»»Ï̳߳ØÊµÏÖ²ßÂÔÖ®ÄÚµÄÊÂÇé¡£

ÉÏÊöRouteʾÀýÊÇÓÃËùνµÄJava DSLÀ´¹¹³ÉµÄ£¬ËüµÄ¿É¶ÁÐԽϸߣ¬Äã¿ÉÒÔÓÃIDEÌṩµÄÖ§³Ö²é¿´ËùÓпÉÓÃÓÚRouteµÄ·½·¨¡£

ÎÒÏ£ÍûÕâÆªÎÄÕÂÄܹ»°ïÖúÄãÌø¹ýCamelµÄÃþË÷½×¶Î¡£³ýÁËÒѾ­Ìáµ½µÄʼþ×é¼þÖ®Í⣬camel»¹ÌṩÁËÈçÏÂ×é¼þ£º

Have fun!

   
5140 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù