ãã£ã¡ã«ã®çŽ¹ä»
è€éãªã·ã¹ãã ããŒãããäœæããããšã¯ãã³ã¹ããããããã»ãŒåžžã«éåœã®ããžãã¹ã§ãã æ¢åã®å®çžŸã®ããã³ã³ããŒãã³ãããããºã«ãšããŠçµã¿ç«ãŠãæ¹ãã¯ããã«å¹ççã§å®å šã§ãã æ¥åžžç掻ã§ã¯ãé»è©±éä¿¡ãéèååŒããå»çãµãŒãã¹ãæ è¡ã嚯楜ã®èšç»ãŸã§ãããããçµ±åã·ã¹ãã ã«ãã°ãã°äŸåããŠããŸãã
ããºã«ã¯ããã¹ãŠã®ãã©ã°ã¡ã³ããããå Žåã«ã®ã¿çµã¿ç«ãŠãããšãã§ããç°¡åãã€ç¢ºå®ã«çžäºã«æ¥ç¶ãããŸãã ã·ã¹ãã çµ±åãããžã§ã¯ãã«ãåãããšãèšããŸãã ãããã1ã€ã®ç»åã圢æããããã«å®éã®ããºã«ã®ããŒã¹ãäœæãããå ŽåãITã·ã¹ãã ã®å Žåãç¶æ³ã¯ååãšããŠå察ã«ãªããŸãã éçºè ãšããŠã¯ãååãšããŠãçµ±åã·ã¹ãã ã®å éšæ§é ãšäœæ¥ã«ã€ããŠããŸãå¿é ãããå€éšããã·ã¹ãã ãšå¯Ÿè©±ããæ¹æ³ã«ãã£ãšèå³ããããŸãã åªããçµ±åãã¬ãŒã ã¯ãŒã¯ïŒãã©ãããã©ãŒã ïŒã«ã¯2ã€ã®ããšãå«ãŸããŸãã1ã€ã¯ãè€éã§çµ±åå¯èœãªã·ã¹ãã ãèšè¿°ããããã®ã·ã³ãã«ã§äŸ¿å©ãªæœè±¡åè£ çœ®ããã1ã€ã¯ãããããåäžã®å šäœã«çµåã§ããæ¥ç¶ã¡ã«ããºã ã§ãã
ãã®ãããªãã©ãããã©ãŒã ã®äŸã¯ãApache Camelã§ãã ãã®æ¬ã¯ãCamelã®æŠèŠã䜿çšæ¹æ³ãããã³Camelãæé«ã®çµ±åãã©ãããã©ãŒã ã®1ã€ãšèããçç±ãç解ããã®ã«åœ¹ç«ã¡ãŸãã æåã®ç« ã¯ãCamelã®çŽ¹ä»ãšãã®äž»ãªæ©èœã®èª¬æããå§ãŸããŸãã 次ã«ããã£ã¡ã«ã®ååžãèŠãŠãæ¬ã®äŸã«åŸãæ¹æ³ã説æããŸãã ãã®ç« ã®æåŸã§ããã®ã¢ãŒããã¯ãã£ãç解ããããã«å¿ èŠãªåºæ¬çãªãã£ã¡ã«ã®æŠå¿µã玹ä»ããŸãã
æºåã¯ããïŒ ãã®åŸããã£ã¡ã«ã«äŒããŸãã
ãã£ã¡ã«ã®çŽ¹ä»
Camelã¯ãçç£çãã€åã³ãæã£ãŠåäœããããã«èšèšãããã¢ããªã±ãŒã·ã§ã³çµ±åãã©ãããã©ãŒã ã§ãã Camelã®æŽå²ã¯2007幎ã«å§ãŸããä»æ¥ã§ã¯Apache 2ã©ã€ã»ã³ã¹ã®äžã§é åžãããŠããæçãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ããããã®åšãã«åŒ·åãªéçºã³ãã¥ããã£ãéçºãããŠããŸãã
Camelã®äž»ãªç®æšã¯ãçµ±åãç°¡çŽ åããããšã§ãã ãã®æ¬ãèªãã§ãCamelã®æ©èœãè©äŸ¡ããå¿ èŠãªããŒã«ã®ã³ã¬ã¯ã·ã§ã³ã«å«ããããšãé¡ã£ãŠããŸãã
Camelã¯Apacheãããžã§ã¯ããã¡ããªãŒã®äžéšã§ããããã®ç°¡æœããšèŠãããããããã®ååãç²åŸããŠããŸãã ãããžã§ã¯ãã®ååã¯ãåµæ¥è ã®äžäººãå«ç ãããã°ãã®ãã©ã³ãã«ç±æ¥ããŠããããŒãžã§ã³ããããŸãã ä»ã®ããŒãžã§ã³ã¯ããããžã§ã¯ãWebãµã€ãã®è³ªåãšåçã®ãªã¹ãã«ãããŸãã
ãã£ã¡ã«ãšã¯äœã§ããïŒ
Camelãã©ãããã©ãŒã ã®ã³ã¢ã¯ãã«ãŒãã£ã³ã°ã¡ã«ããºã ãããæ£ç¢ºã«ã¯ãã«ãŒãã£ã³ã°ã¡ã«ããºã ã®ãªã³ã«ãŒã§ãã ãªã³ã«ã䜿çšããŠãç¬èªã®ã«ãŒãã£ã³ã°ã«ãŒã«ãèšå®ããã¡ãã»ãŒãžãåä¿¡ãããœãŒã¹ã決å®ãããããã®ã¡ãã»ãŒãžãããã«åŠçããã³éä¿¡ããæ¹æ³ã決å®ã§ããŸãã Camelçµ±åèšèªã䜿çšãããšãããžãã¹ããã»ã¹ã«è¿ãè€éãªã«ãŒãã£ã³ã°ã«ãŒã«ãèšå®ã§ããŸãã å³ã«ç€ºãããã« 1.1ããã£ã¡ã«ã¯ç¡é¢ä¿ãªã·ã¹ãã éã®ãªã³ã¯ã§ãã
Camelã®åºæ¬ååã®1ã€ã¯ãåŠçãããããŒã¿ã«ã€ããŠäœãä»®å®ããªããšããããšã§ãã éçºè ãšããŠãããŒã¿ãæšæºåœ¢åŒã«å€æããããšãªãããŸããŸãªã¿ã€ãã®ã·ã¹ãã ãçµ±åã§ãããããããã¯éèŠãªãã€ã³ãã§ãã
å³ 1.1ãã£ã¡ã«ã¯ãç¡é¢ä¿ãªã·ã¹ãã éã®ãªã³ã¯ã§ãã
é«ã¬ãã«ã®æœè±¡åã«ãããCamelã§ã¯åãAPIã䜿çšããŠãç°ãªããããã³ã«ãšããŒã¿åã䜿çšããç°ãªãã·ã¹ãã ãšå¯Ÿè©±ã§ããŸãã ç¹å®ã®ãããã³ã«ããã³ããŒã¿åã®APIã¯ãé©åãªã³ã³ããŒãã³ããšããŠå®è£ ãããŸãã ããã©ã«ãã§ã¯ãCamelã¯280ãè¶ ãããããã³ã«ãšããŒã¿ã¿ã€ãããµããŒãããæ¡åŒµå¯èœãªã¢ãžã¥ãŒã«ã¢ãŒããã¯ãã£ã®ãããã§ãç¬èªã®ãããã³ã«ãšãªãŒãã³ãããã³ã«ã®äž¡æ¹ã«å¿ èŠãªãããã³ã«ã®ãµããŒããåå¥ã«å®è£ ã§ããŸãã ããã«ãããäžå¿ èŠãªããŒã¿å€æãäžèŠã«ãªããCamelãé«éã«ãªãã ãã§ãªããé£ãããåãå°ãªããªããŸãã çµæãšããŠãCamelã¯é«åºŠãªåŠçæ©èœãå¿ èŠãšãããããžã§ã¯ãã«çµã¿èŸŒãã®ã«æé©ã§ãã ç¹ã«ãCamelã¯Apache ServiceMixãKarafãActiveMQãªã©ã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®çµ±åã¿ã¹ã¯ã«ãã§ã«äœ¿çšãããŠããŸãã
ãã£ã¡ã«ã§ã¯ãªããã®ã«ã€ããŠã ããã¯ESBãµãŒãã¹ãã¹ã§ã¯ãããŸããããã«ãŒãã£ã³ã°ãå€æããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã¢ãã¿ãªã³ã°ãããã³ãã®ä»ã®æ©èœããµããŒãããŠãããããESBã®è»œéããŒãžã§ã³ãšåŒã°ãããã®ããããŸãã Camelã«ã¯ã³ã³ãããŒãšä¿¡é Œã§ããã¡ãã»ãŒãžã³ã°ãã¹ããããŸããããããšãã°ãæ¢ã«èª¬æããApache ServiceMixã§äœ¿çšã§ããŸãã ãããã£ãŠãCamelã¯ESBãœãªã¥ãŒã·ã§ã³ã§ã¯ãªãçµ±åãã©ãããã©ãŒã ãšåŒã¶ããšã奜ã¿ãŸãã
ESBã®è€éãªã¢ã³ã¹ã¿ãŒã·ã¹ãã ã«ã€ããŠããã«æãæµ®ãã¶ãªããç§ãã¡ã¯å®å¿ãããããšæ¥ãã§ããŸãã
ãã£ã¡ã«ãšã¯äœããç解ããããã«ããã®äž»ãªæ©èœãæ€èšããŠãã ããã
ã©ã¯ãã䜿çšããçç±
ãã£ã¡ã«ã¯ãçµ±åã®åéã«ãããæ°ããã¢ã€ãã¢ã®å®çšçãªå®æœåœ¢æ ã§ãã 次ã«ãCamelã®æ©èœã詳ããèŠãŠãããŸãããä»ã®ãšããããããããªã¹ãããŸãã
- 調åããã³ã«ãŒãã£ã³ã°ã¡ã«ããºã
- æ¡åŒµå¯èœãªã³ã³ããŒãã³ãã©ã€ãã©ãª
- ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³çµ±åãã³ãã¬ãŒãïŒEIPïŒ
- ãµããžã§ã¯ãæåèšèªïŒDSLïŒ
- ãã€ããŒã圢åŒç¬ç«ã«ãŒã¿ãŒ
- ãã©ã°ã€ã³ã¢ãŒããã¯ãã£
- ãã¬ãŒã³ãªãŒã«ãJavaãªããžã§ã¯ãïŒPOJOïŒã¢ãã«
- èšå®ãç°¡å
- èªååã³ã³ããŒã¿ãŒ
- ãã€ã¯ããµãŒãã¹ãžã®çµ±åã«é©ãã軜éã³ã¢
- ã¯ã©ãŠããµããŒã
- ãã¹ãããŒã«ããã
- ã¢ã¯ãã£ããªéçºã³ãã¥ããã£
次ã«ããã®ãªã¹ãããã€ã³ãå¥ã«åæããŸãã
調åããã³ã«ãŒãã£ã³ã°ã¡ã«ããºã
ã¡ãã£ãšãŒã·ã§ã³ãšã«ãŒãã£ã³ã°ã®ã¡ã«ããºã ã¯ãCamelã®äžæ žã§ãã ã«ãŒãã£ã³ã°ã¡ã«ããºã ã¯ãã«ãŒãæ§æã«åŸã£ãŠã¡ãã»ãŒãžãéžæçã«ç§»åããŸãã Camelã§ã¯ãçµ±åãã³ãã¬ãŒããšãµããžã§ã¯ãèšèªã䜿çšããŠã«ãŒããæ§æãããŸãïŒè©³çŽ°ã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã
æ¡åŒµå¯èœãªã³ã³ããŒãã³ãã©ã€ãã©ãª
Camelã«ã¯280ãè¶ ããã³ã³ããŒãã³ãã®åºç¯ãªã©ã€ãã©ãªããããããŸããŸãªãã©ã³ã¹ããŒããä»ããŠæ¥ç¶ããç°ãªãAPIã䜿çšããç°ãªãããŒã¿åœ¢åŒãç解ã§ããŸãã å³ 1.2ã æ¢ã«äœ¿çšããããŸãã¯äœ¿çšãããæè¡ã確å®ã«èŠã€ããããšãã§ããŸãã ãã¡ããããã®æ¬ã®æ çµã¿ã®äžã§ããã¹ãŠã®Camelã³ã³ããŒãã³ããæ€èšããããšã¯äžå¯èœã§ããã20åã®äž»èŠãªã³ã³ããŒãã³ãã«ã€ããŠèª¬æããŸãã
å³ 1.2ãããããã®ã«æ¥ç¶ããæ©èœïŒCamelã¯280ãè¶ ãããã©ã³ã¹ããŒããAPIãããã³ããŒã¿åœ¢åŒããµããŒãããŠããŸãã
ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³çµ±åãã³ãã¬ãŒãïŒEIPïŒ
ããŸããŸãªçµ±åã®åé¡ããããããGregor HohpeãšBobby Woolfãææããããã«ããããã®å€ãã«ã¯åæ§ã®è§£æ±ºçããããŸãã ããã2ã€ã¯ãæžç±ãEnterprise Integration PatternsãïŒãã·ã¢èªã«ç¿»èš³ããã-ãEnterprise Application Integration TemplatesãïŒããªãªãŒã¹ããŸãããããã¯ãã¢ããªã±ãŒã·ã§ã³çµ±åã®åéã®å°é家ã§ãããšèãã人ãªã誰ã§ãèªãã§ãã ããã ããã«ããã®æ¬ã¯ãCamelã®æŠå¿µãããéãç°¡åã«ç解ããã®ã«åœ¹ç«ã¡ãŸãã
çµ±åãã³ãã¬ãŒãïŒEIPïŒã¯ãããŸããŸãªçµ±åã®åé¡ã«å¯Ÿããå®èšŒæžã¿ã®ãœãªã¥ãŒã·ã§ã³ãæäŸããã ãã§ãªãããããã®åé¡èªäœã®èª¬æãšè¡šç€ºãç°¡çŽ åããé©åãªã»ãã³ãã£ã¯ã¹ãæäŸãããã䟿å©ã§ãã ãã£ã¡ã«ã¯ãEIPãã¿ãŒã³ã«å€§ããåºã¥ããŠããŸãã ãã ããEIPãã³ãã¬ãŒãã¯åé¡ãšè§£æ±ºçãèšè¿°ããå ±éã®èŸæžãæäŸããŸããããã®èŸæžã¯åœ¢åŒåãããŠããŸããã Camelã¯ãçµ±åãœãªã¥ãŒã·ã§ã³ãèšè¿°ããããã®èšèªãæäŸããããšã«ããããã®ã®ã£ãããåããŸãã Enterprise Integration Patternsããã¯ã«èšèŒãããŠãããã¿ãŒã³ãšCamelDSLã®ãµããžã§ã¯ãèšèªã®éã«ã¯ãã»ãŒ1察1ã®é¢ä¿ããããŸãã
ãµããžã§ã¯ãæåèšèªïŒDSLïŒ
Camelãç»å Žããæç¹ã§ãçµ±åãžã®äž»ãªè²¢ç®ã¯äž»é¡æåèšèªïŒDSLïŒã§ããã æéãçµã€ã«ã€ããŠãä»ã®çµ±åãã¬ãŒã ã¯ãŒã¯ããã®äŸã«åŸããçŸåšDSLã¯JavaãXMLãããã³ãã®ä»ã®ããã°ã©ãã³ã°èšèªã«ãªã£ãŠããŸãã DSLã䜿çšãããšãéçºè ã¯äœ¿çšããããŒã«ïŒããã°ã©ãã³ã°èšèªïŒã®æ©èœã«æ°ãåãããããšãªããçµ±åã¿ã¹ã¯ã«éäžã§ããŸãã ç°ãªã圢åŒã䜿çšããããæ©èœçã«ã¯å®å šã«åçãªDSLã®äŸãããã€ãèããŠã¿ãŸãããã
Java DSL
1 from("file:data/inbox").to("jms:queue:order");
XML DSL
1 <route> 2 <from uri="file:data/inbox"/> 3 <to uri="jms:queue:order"/> 4 </route>
ããã¯å®éã®ã³ãŒãã§ãããç®çã®ãã©ã«ããŒããJMSïŒJava Message ServiceïŒãã¥ãŒã«ãã¡ã€ã«ãéä¿¡ããããšãã©ãã»ã©ç°¡åãã瀺ããŠããŸãã DSLã¯äžè¬çãªããã°ã©ãã³ã°èšèªã«åºã¥ããŠãããããéçºè ã¯ã³ã³ãã€ã©ãŒãšã©ãŒãå ¥åãŸãã¯æ€åºããéã®ãªãŒãã³ã³ããªãŒããªã©ãIDEç°å¢ã®äœ¿ãæ £ãã䟿å©ãªããŒã«ã«åŒãç¶ãã¢ã¯ã»ã¹ã§ããŸãã 1.3ã
å³ 1.3 Camel DSLèšèªã¯Javaãªã©ã®äžè¬çãªããã°ã©ãã³ã°èšèªã«åºã¥ããŠãããããIDEã®äŸ¿å©ã§äœ¿ãæ £ããæ©èœã䜿çšã§ããŸãã
ãã®å³ã¯ãEclipse IDEã§å ¥åãããªãŒãã³ã³ããªãŒãæ©èœããå¯èœãªDSLåŒã®ãªã¹ããæäŸããæ¹æ³ã瀺ããŠããŸãã
ãã€ããŒã圢åŒç¬ç«ã«ãŒã¿ãŒ
Camelã¯ãXMLãã€ããŒããªã©ã1ã€ã®æ£èŠåããã圢åŒã ãã§ãªãããããã圢åŒã§æçšãªããŒã¿ãã«ãŒãã£ã³ã°ã§ããŸãã ãããã£ãŠãããŒããã«ãŒãã£ã³ã°ããããã«ãæšæºåœ¢åŒã«å€æããå¿ èŠã¯ãããŸããã
ãã©ã°ã€ã³ã¢ãŒããã¯ãã£
Camelã®ã¢ãžã¥ãŒã«ã¢ãŒããã¯ãã£ã䜿çšãããšãé ä¿¡ããã±ãŒãžã«å«ãŸããã³ã³ããŒãã³ããšããµãŒãããŒãã£ã®éçºè ãäœæããã³ã³ããŒãã³ãã®äž¡æ¹ãããŒãã§ããŸãã ããã«ãCamelã®ã»ãšãã©ãã¹ãŠãæ§æã§ããŸãããã®æ©èœã®å€ãã¯ãIDçæããããŒå¶åŸ¡ãå®äºã·ãŒã±ã³ã¹ãã¹ããªãŒã ãã£ãã·ã³ã°ãªã©ããã©ã°ã€ã³ããã³ã«ã¹ã¿ãã€ãºå¯èœã§ãã
ã¢ãã«POJO
Camelã®JavaïŒãŸãã¯Plain Old Java ObjectãPOJOïŒã®Beanã³ã³ããŒãã³ãã¯äžæµã®åžæ°ã§ãããããã»ãŒãã€ã§ãã©ãã§ãçµ±åãããžã§ã¯ãã§äœ¿çšã§ããŸãã å€ãã®å Žåãã³ãŒãã§Camelã®çµã¿èŸŒã¿æ©èœãæ¡åŒµããããšãã§ããŸãã
èšå®ãç°¡å
ãã£ã¡ã«ã®æ§æã¯å¯èœãªéãæå°éã«æããããŸãã ã«ãŒãã§ãšã³ããã€ã³ããçŽæ¥å®çŸ©ããã«ã¯ãããããããURIæ§æã䜿çšããŸãã
ããšãã°ã次ã®ããã«èšè¿°ããã ãã§ããã¡ã€ã«ãšã³ããã€ã³ãããéå§ãã.txtãã¡ã€ã«ã®ãµããã©ã«ããŒãååž°çã«ã¹ãã£ã³ãããã£ã¡ã«ã«ãŒããæ§æã§ããŸãã
1 from("file:data/inbox?recursive=true&include=.*txt$")...
èªååã³ã³ããŒã¿ãŒ
Camelã«ã¯ã350ãè¶ ããã³ã³ããŒã¿ãŒãåããã¿ã€ãå€æãšã³ãžã³ãçµã¿èŸŒãŸããŠããŸãã ãã€ãé åãæååã«å€æãããªã©ãå€æã«ãŒã«ãæ§æããå¿ èŠããªããªããŸããã ãŸããCamelã«å¿ èŠãªã³ã³ããŒã¿ãŒããªãå Žåã§ãããã€ã§ãèªåã§äœæã§ããŸãã ãããŠãæè¯ã®éšåã¯ãããããã¹ãŠãããªãã®åå ãªãã§èªåŸçã«æ©èœããããšã§ãã
Camelã³ã³ããŒãã³ããèªååå€æã䜿çšãããããã»ãšãã©ã®ããŒã¿åãåãå ¥ããŠã䜿çšå¯èœãªåã«å€æã§ããŸãã Camelã³ãã¥ããã£ã§ã¯ããã®æ©èœã¯æã人æ°ã®ããæ©èœã®1ã€ã§ããããªãJavaã«ãªãã®ãçåã«æã人ãããŸãã
ãã€ã¯ããµãŒãã¹ãžã®çµ±åã«é©ãã軜éã³ã¢
Camelã«ãŒãã«ã®å®éã®ééã¯ãããããã§ããã©ã€ãã©ãªã®ãµã€ãºã¯çŽ4.9 MBã§ãå®è¡æã®äŸåé¢ä¿ã¯çŽ1.3 MBãå æããŸãã ãã®ãããCamelã¯ãã¹ã¿ã³ãã¢ãã³ã¢ããªã±ãŒã·ã§ã³ããã€ã¯ããµãŒãã¹ãWebã¢ããªã±ãŒã·ã§ã³ãSpringã¢ããªã±ãŒã·ã§ã³ãJava EEãOSGiãSpring BootãWildFlyã¢ããªã±ãŒã·ã§ã³ãAWSãKubernetesãCloud Foundryãªã©ã®ã¯ã©ãŠããã©ãããã©ãŒã ãªã©ãã©ãã«ã§ãç°¡åã«çµã¿èŸŒã¿ãã©ãã«ã§ãå±éã§ããŸãã Camelã¯å ã ããµãŒããŒã·ã¹ãã ãESBãœãªã¥ãŒã·ã§ã³ãšããŠã§ã¯ãªããJavaãååšããå®è¡å¯èœãªãã®ã«åã蟌ãããšãã§ãããã®ãšããŠäœæãããŸããã
ã¯ã©ãŠããµããŒã
Camelã¯ã¯ã©ãŠãã®äœ¿çšã«çŠç¹ãåãããŠããã ãã§ãªãã次ã®ãããªã¯ã©ãŠããµãŒãã¹ã«æ¥ç¶ããããã®å€ãã®ã³ã³ããŒãã³ããæäŸããŠããŸãã
- Amazon DynamoDBãEC2ãKinesisãSimpleDBãSESãSNSãSQSãSWFãããã³S3
- BraintreeïŒPayPalãAppleãAndroid Payãªã©ïŒ
- Dropbox
- ãã§ã€ã¹ããã¯
- Github
- Google Big Queryãã«ã¬ã³ããŒããã©ã€ããã¡ãŒã«ããããµã
- ããããã£ãã
- Salesforce
- ä»ã®å€ãã®
ãã¹ãããŒã«ããã
Camelã«ã¯ãã¢ããªã±ãŒã·ã§ã³ããã¹ãããããã®ããã±ãŒãžãå«ãŸããŠããŸãã ãã®ããã±ãŒãžã¯Camelèªäœã®ãã¹ãã«ãç©æ¥µçã«äœ¿çšããã18,000以äžã®ãŠããããã¹ãããããŸãã ããã±ãŒãžã«ã¯ãããšãã°ãå®éã®ãšã³ããã€ã³ããã·ãã¥ã¬ãŒãããããã¢ããªã±ãŒã·ã§ã³ãæå®ãããèŠä»¶ãæºãããŠãããã©ãããCamelã確èªã§ããããã«æåŸ ãããçµæãèšå®ã§ããç¹å¥ãªã³ã³ããŒãã³ããå«ãŸããŠããŸãã
ã¢ã¯ãã£ããªéçºã³ãã¥ããã£
Camelãããžã§ã¯ãã«ã¯æŽ»çºã§æŽ»çºãªã³ãã¥ããã£ãããããã®æ¬ãå·çããŠããæç¹ã§10幎以äžã«ããã£ãŠç掻ãšçºå±ãç¶ããŠããŸãã ãã®ãããªã³ãã¥ããã£ãæã€ããšã¯ãç¬èªã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãéžæããéã®éèŠãªèŠçŽ ã§ãã ãããžã§ã¯ããéã¢ã¯ãã£ãã®å Žåãã³ãã¥ããã£ã®ãµããŒãã«é Œãããšã¯ã»ãšãã©ã§ãããåé¡ã«çŽé¢ããããšã¯ã§ããŸããã ãããŠãã®éã«ãéçºè ãšäžè¬ãŠãŒã¶ãŒã®äž¡æ¹ã§ãããã£ã¡ã«ãªã©ã®ã¢ã¯ãã£ããªãããžã§ã¯ãã®åå è ã¯ããã€ã§ãæ¯æŽããæºåãã§ããŠããŸãã
Camelã®äž»ãªæ©èœãç°¡åã«ç¢ºèªããã®ã§ã次ã¯ç·Žç¿ã«ç§»ããŸããããé åžããããå ¥æããŠãããã€ãã®äŸãæ€èšããŸãã
ã¯ããã«
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãCamelãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å ¥ææ¹æ³ãšããã®å 容ã«ã€ããŠç°¡åã«èª¬æããŸãã 次ã«ãApache Mavenã䜿çšããŠãã®æ¬ã®ãœãŒã¹ã³ãŒãã®äŸãå®è¡ããæ¹æ³ã瀺ããŸãã
é åžããå§ããŸãããã
Camelã®ããŠã³ããŒããšã€ã³ã¹ããŒã«
Camelã¯Apache Camelãããžã§ã¯ãã®Webãµã€ãã§å ¥æã§ããŸãã ããã«ã¯ããã¹ãŠã®ããŒãžã§ã³ã®ãªã¹ããšãææ°ã®CamelãªãªãŒã¹ã®ããŠã³ããŒããªã³ã¯ããããŸãã
ãã®æ¬ã§ã¯ãCamel 2.20.1ã䜿çšããŸãã ãã®ããŒãžã§ã³ãå ¥æããã«ã¯ãããŠã³ããŒãããŒãžã®é©åãªãªã³ã¯ã䜿çšããŠãã ããã ãã®ããŒãžã®æåŸã«ã¯ãWindowsçšã®zipãã¡ã€ã«ãšmacOS / Linuxçšã®tar.gzãšãã2ã€ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãžã®ãªã³ã¯ããããŸãã ç®çã®ãã¡ã€ã«ãããŠã³ããŒãããããŒã«ã«ãã©ã€ãã«è§£åããŸãã
ã³ã³ãœãŒã«ãéããCamelãã£ã¹ããªãã¥ãŒã·ã§ã³ã解åãããã©ã«ããŒã«ç§»åããŸãã 次ã®ãã¡ã€ã«ãå«ãŸããŸãã
1 [janstey @ ghost apache-camel-2.20.1] $ ls 2 docãµã³ãã«lib LICENSE.txt NOTICE.txt README.txt
ã芧ã®ãšããããã£ã¹ããªãã¥ãŒã·ã§ã³ã®æ§é ã¯ã·ã³ãã«ã§ãããããããã®ã«ãªã£ãŠããŸãã
- doc-HTML圢åŒã®ã©ã¯ãããã¥ã¢ã«ãã©ã«ãã ããã¯ããªãªãŒã¹æã®Camel Webãµã€ãã®åãªãã³ããŒã§ãã ãµã€ãã«ã¢ã¯ã»ã¹ã§ããªãå Žåãããã®æ¬ãæå ã«ãªãå Žåã«åœ¹ç«ã¡ãŸãã
- examples-97åã®Camelãµã³ãã«ãå«ããã©ã«ã
- lib-ãã¹ãŠã®Camelã©ã€ãã©ãªãå«ããã©ã«ããŒã åŸã§ãMavenã䜿çšããŠéã³ã¢ã³ã³ããŒãã³ãã®äŸåé¢ä¿ãç°¡åã«ããŒãããæ¹æ³ã瀺ããŸãã
- LICENSE.txt-Camelãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ã©ã€ã»ã³ã¹ã®ããã¹ããå«ããã¡ã€ã«ã ããã¯Apacheãããžã§ã¯ãã§ãããããã©ã€ã»ã³ã¹ã¯Apacheã©ã€ã»ã³ã¹ãããŒãžã§ã³2.0ã§ã
- NOTICE.txt-Camelãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ãŸãããµãŒãããŒãã£ã®äŸåé¢ä¿ã®èäœæš©æ å ±ãå«ããã¡ã€ã«
- README.txt-ãã£ã¡ã«ã®ç°¡åãªçŽ¹ä»ãšåå¿è ãããã«äœ¿ãå§ããã®ã«åœ¹ç«ã€ãªã³ã¯ã®ãªã¹ããå«ããã¡ã€ã«
ã§ã¯ããã®æ¬ã®ã©ã¯ãã®äŸã«åŸãæ¹æ³ãèŠãŠã¿ãŸãããã
ãã£ã¡ã«ã®æåã®æã¡äžã
ãã®ãããäžèšã§ã¯ãCamelãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å ¥ææ¹æ³ã«ã€ããŠèª¬æãããã®å 容ã«ã€ããŠç°¡åã«èª¬æããŸããã ãšããããããªããå匷ããããšããå§ããã説æãšæ瀺ãããäŸããããŸãã
ãã ãããã®æ¬ã§ã¯ããã£ã¹ããªãã¥ãŒã·ã§ã³ããŸã£ãã䜿çšããŸããã ããã®ãã¹ãŠã®ãœãŒã¹ã³ãŒãäŸã§ã¯ãå¿ èŠãªãã¹ãŠã®Camelã©ã€ãã©ãªãèªåçã«ããŠã³ããŒãããApache Mavenã䜿çšããŠããŸãã ãããã£ãŠãã¯ã©ã¹ãã¹ã«ç»é²ãããããšãå¶åŸ¡ããå¿ èŠã¯ãããŸããã
ãã®æ¬ã®ãã¹ãŠã®ãµã³ãã«ã³ãŒãã¯ã GitHub Webãµã€ãã«ãããŸãã
æåã«æ€èšããäŸã¯ãçµ±åã®çŸå®ãã€ãŸããã¡ã€ã«ã«ãŒãã£ã³ã°ã«ãããããããŒã¯ãŒã«ããã§ãã ãããã©ã«ããŒïŒããŒã¿/åä¿¡ããã¯ã¹ïŒã®ãã¡ã€ã«ãèªã¿åããããããç¹å®ã®æ¹æ³ã§åŠçããçµæãå¥ã®ãã©ã«ããŒïŒããŒã¿/éä¿¡ããã¯ã¹ïŒã«æžã蟌ãå¿ èŠããããšããŸãã ç°¡åã«ããããã«ãåŠçãçç¥ããŸããå³4ã«ç€ºãããã«ãã¿ã¹ã¯ã¯ãœãŒã¹ãã¡ã€ã«ã®ã³ããŒã«åæžãããŸãã 1.4ã
å³ 1.4 data / inboxãã©ã«ããŒããdata / outboxãã©ã«ããŒã«ãã¡ã€ã«ãã«ãŒãã£ã³ã°ããŸãã
ç°¡åãªãšããã¯ãããŸãããïŒ ä»¥äžã«ãCamelã䜿çšããªããã¥ã¢Javaã§ã®ãã®ã¿ã¹ã¯ã®å®è£ ã瀺ããŸãã
ãªã¹ã1.1 Pure Javaã§1ã€ã®ãã©ã«ããŒããå¥ã®ãã©ã«ããŒã«ãã¡ã€ã«ãã«ãŒãã£ã³ã°ãã
1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.io.OutputStream; 6 7 public class FileCopier { 8 9 public static void main(String args[]) throws Exception { 10 File inboxDirectory = new File("data/inbox"); 11 File outboxDirectory = new File("data/outbox"); 12 outboxDirectory.mkdir(); 13 File[] files = inboxDirectory.listFiles(); 14 for (File source : files) { 15 if (source.isFile()) { 16 File dest = new File( 17 outboxDirectory.getPath() 18 + File.separator 19 + source.getName()); 20 copyFile(source, dest); 21 } 22 } 23 } 24 25 private static void copyFile(File source, File dest) 26 throws IOException { 27 OutputStream out = new FileOutputStream(dest); 28 byte[] buffer = new byte[(int) source.length()]; 29 FileInputStream in = new FileInputStream(source); 30 in.read(buffer); 31 try { 32 out.write(buffer); 33 } finally { 34 out.close(); 35 in.close(); 36 } 37 } 38 }
éåžžã«åçŽãªã¿ã¹ã¯ã®ããã«æããŸãããFileCopierã«ã¯ãã§ã«37è¡ãã®ã³ãŒãããããŸãã ããã«ãäœã¬ãã«ã®ãã¡ã€ã«APIã䜿çšããå¿ èŠããããŸããããããŠãéèŠãªããšã«ããªãœãŒã¹ãæ£ããéããããšãå¿ããªãã§ãã ããã ããã§ãdata / inboxãã©ã«ãããæ°ãããã¡ã€ã«ãã³ããŒããã ãã§ãããšæ³åããŠãã ããã 次ã«ãã¿ã€ããŒãèšå®ããã©ã®ãã¡ã€ã«ãæ¢ã«ã³ããŒããããã远跡ããå¿ èŠããããŸãã ç®ã®åã§è€éããå¢ããŠããŸãã
幞ããªããšã«ãä»æ€èšãããããªçµ±åã¿ã¹ã¯ã¯ãã§ã«æ°åå解決ãããŠããŸãã ãããã£ãŠãè»èŒªãåçºæããŠã³ãŒããæã§æžãå¿ èŠã¯ãããŸããã Apache Camelãªã©ã®çµ±åãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããã®ãã¹ãŠã®æ©èœãã©ã®ããã«å®è£ ãããããèŠãŠã¿ãŸãããã
ãªã¹ã1.2 Apache Cameläžã®ãããã©ã«ããŒããå¥ã®ãã©ã«ããŒãžã®ãã¡ã€ã«ã®ã«ãŒãã£ã³ã°
1 import org.apache.camel.CamelContext; 2 import org.apache.camel.builder.RouteBuilder; 3 import org.apache.camel.impl.DefaultCamelContext; 4 5 public class FileCopierWithCamel { 6 7 public static void main(String args[]) throws Exception { 8 CamelContext context = new DefaultCamelContext(); 9 context.addRoutes(new RouteBuilder() { 10 public void configure() { 11 from("file:data/inbox?noop=true") 12 .to("file:data/outbox"); 13 } 14 }); 15 context.start(); 16 Thread.sleep(10000); 17 context.stop(); 18 } 19 }
ãã®äŸã®ã³ãŒãã®ã»ãšãã©ã¯ãã³ãã¬ãŒãã§ãã ãã¹ãŠã®Camelã¢ããªã±ãŒã·ã§ã³ã¯CamelContextã䜿çšããŸããCamelContextã¯ãã®åŸèµ·åããåæ¢ããŸãã ãŸããCamelã¢ããªã±ãŒã·ã§ã³ã«ãã¡ã€ã«ãã³ããŒããæéãäžããã¹ãªãŒãã¡ãœãããè¿œå ããŸããã ãªã¹ã1.2ã§æ³šæãã¹ãäž»ãªããšã¯ã«ãŒãã§ãã
Camelã®ã«ãŒãã¯ãèªã¿åãããã®ãšåãé åºã§å®çŸ©ãããŸãã ããšãã°ãäžèšã®äŸã®ã«ãŒãã¯æ¬¡ã®ããã«èªã¿åãããšãã§ããŸãïŒnoopãã©ã¡ãŒã¿ãŒã䜿çšããŠdata / inboxãã©ã«ããŒã®ãã¡ã€ã«ïŒfrom fileïŒããã¡ãã»ãŒãžãåä¿¡ããdata / outboxãã©ã«ããŒã®ãã¡ã€ã«ïŒto fileïŒã«éä¿¡ããŸãã noopãã©ã¡ãŒã¿ãŒã¯ããœãŒã¹ãã¡ã€ã«ããã®ãŸãŸã«ããŠããå¿ èŠãããããšãæå³ããŸããããããªããšãCamelããããã転éããŸãã ãã£ã¡ã«ã«åºäŒã£ãããšããªãã»ãšãã©ã®äººã¯ããã®ã«ãŒããäœãããããããç解ããŠãããããããŸããã ãŸããå®åã³ãŒããåé€ãããšãã¿ã¹ã¯å šäœã2è¡ã®Javaã³ãŒãã«ãªããŸãã
ãã®äŸãå®è¡ããã«ã¯ã Apache MavenãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã æºåãã§ããããã³ã³ãœãŒã«ãéããŠããã®ããã¥ã¢ã«ã®äŸã®ãœãŒã¹ãã£ã¬ã¯ããªã«ããchapter1 / file-copyãã©ã«ããŒã«ç§»åããŸãã ãã®äžã«ãããŸãïŒ
- ããŒã¿-ãã®ãã©ã«ããŒã«ã¯ãåäžã®message1.xmlãã¡ã€ã«ãå«ãåä¿¡ããã¯ã¹ãã©ã«ããŒããããŸã
- srcã¯ããã®ç« ã®äŸã®ãœãŒã¹ãã©ã«ããŒã§ãã
- pom.xml-äŸãæ§ç¯ããããã®æ å ±ãå«ããã¡ã€ã«ãããªãã¡Maven POMïŒãããžã§ã¯ããªããžã§ã¯ãã¢ãã«ïŒXMLãã¡ã€ã«
泚
ãã®æ¬ãæžããŠãããšããMaven 3.5.0ã䜿çšãããŸããã Mavenã®ä»ã®ããŒãžã§ã³ã¯ãããã«ç€ºãããã«æ£ç¢ºã«åäœããªãå ŽåããããŸãã
POMãã¡ã€ã«ã®å 容ã以äžã®ãªã¹ãã«ç€ºããŸãã
ãªã¹ã1.3ãã¡ã€ã³Camelã©ã€ãã©ãªã䜿çšããããã«å¿ èŠãªMaven POMãã¡ã€ã«
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 4 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 <parent> 7 <groupId>com.camelinaction</groupId> 8 <artifactId>chapter1</artifactId> 9 <version>2.0.0</version> 10 </parent> 11 12 <artifactId>chapter1-file-copy</artifactId> 13 <name>Camel in Action 2 :: Chapter 1 :: File Copy Example</name> 14 15 <dependencies> 16 <dependency> 17 <groupId>org.apache.camel</groupId> 18 <artifactId>camel-core</artifactId> 19 </dependency> 20 <dependency> 21 <groupId>org.slf4j</groupId> 22 <artifactId>slf4j-log4j12</artifactId> 23 </dependency> 24 </dependencies> 25 </project>
Mavenã¯å¥ã®å€§ããªãããã¯ã§ããããã§ã¯ãäŸã䜿çšããŠäœæ¥ã§ããããã«ãæå°éã«è§ŠããŸãã
ãªã¹ã1.3ã®Maven POMãã¡ã€ã«ã¯ãã»ãšãã©ãã¹ãŠã®ããã©ã«ãPOMèšå®ã䜿çšãããããããããããªãã®äººçã§æãçãPOMãã¡ã€ã«ã®1ã€ã§ãã ãããã«å ããŠãããã€ãã®èšå®ã¯èŠªPOMã§èšå®ãããŸãã ããããããã§æãéèŠãªéšåã¯ãCamelã©ã€ãã©ãªãŒãžã®äŸåæ§ã§ãã ãã®POMã䜿çšããŠãMavenã¯æ¬¡ã®ããšãè¡ããŸãã
- groupIdãartifactIdãããã³ããŒãžã§ã³ã«åºã¥ããŠæ€çŽ¢ãã¹ãäœæããŸãã ããŒãžã§ã³èŠçŽ ã«ã¯ã芪èŠçŽ ã«ãã£ãŠåç §ãããPOMã§å®çŸ©ãããŠããcamel-versionããããã£ããããããã¯åèšã§2.20.1ã§ãã äŸåé¢ä¿ã¿ã€ãã¯å®çŸ©ãããŠããªããããJARãã¡ã€ã«ãšèŠãªãããŸãã ãããã£ãŠãæ€çŽ¢ãã¹ã¯org / apache / camel / camel-core / 2.20.1 / camel-core-2.20.1.jarã«ãªããŸãã
- ãªã¹ã1.3ã¯Camelã®äŸåé¢ä¿ãæ¢ãå Žæã«é¢ããã¬ã€ãã³ã¹ãæäŸããŠããªããããMavenã¯ã®äžå€®ãªããžããªã§ããããæ¢ããŸãã
- æ€çŽ¢ãã¹ãšãªããžããªURLãçµã¿åãããããšã«ãããMaven ã¯ãã¡ã€ã«ãããŠã³ããŒãããããšããŸã ã
- JARãã¡ã€ã«ã¯ãéåžžã¯.m2 /ãªããžããªã®ããŒã ãã£ã¬ã¯ããªã«ããããŒã«ã«Mavenãã£ãã·ã¥ã«ä¿åãããŸãã Linux / macOSã§ã¯ãããã¯ã/ .m2 / repositoryãã©ã«ããŒã§ãWindowsã§ã¯CïŒ\ Users \ [Username] \ãM2 \ repositoryã§ãã
- ãªã¹ã1.2ã®ã¢ããªã±ãŒã·ã§ã³ã³ãŒããå®è¡ãããšãCamel JARãã¡ã€ã«ãã¯ã©ã¹ãã¹ã«è¿œå ãããŸãã
ãªã¹ã1.2ã®äŸãå®è¡ããã«ã¯ãchapter1 / file-copyãã©ã«ããŒã«ç§»åãã次ã®ã³ãã³ããå®è¡ããŸãã
1 mvn compile execïŒjava
ãã®çµæãMavenã¯srcãã£ã¬ã¯ããªå ã®ãœãŒã¹ãã³ã³ãã€ã«ããã¯ã©ã¹ãã¹å ã®ãã£ã¡ã«ã³ã¢JARãã¡ã€ã«ã䜿çšããŠFileCopierWithCamelã¯ã©ã¹ãå®è¡ããŸãã
泚
Apache Mavenã¯JARäŸåé¢ä¿ãç©æ¥µçã«ããŠã³ããŒãããããããã®æ¬ã®ãã¹ãŠã®äŸã¯ã€ã³ã¿ãŒãããã«æ¥ç¶ããããã«èšèšãããŠããŸãã ãã®æ¬ã®ãã¹ãŠã®äŸã®çµæãšããŠããŠã³ããŒããããã©ã€ãã©ãªã®åèšãµã€ãºã¯ãæ°çŸã¡ã¬ãã€ãã«ãªããŸãã
chapter1 / file-copyãã©ã«ããŒããMavenã³ãã³ããå®è¡ããå®äºåŸã«data / outboxãã©ã«ããŒã«ç§»åããŠããã¡ã€ã«ãã³ããŒãããŠããããšã確èªããŸãã ããã§ãšãããããŸããæåã®äŸãå®äºããŸããã ã¯ããããã¯éåžžã«ç°¡åã§ããããã®æ¬ã®ä»ã®ã»ãšãã©ãã¹ãŠã®äŸãå®è¡ããæ¹æ³ãç¥ã£ãŠããŸãã
</翻蚳ã®çµãã>