ÆÁ¾ØÅ¥
2018.03.23 / 01:54

Apache Camel Overview

º½ÀÌ
Ãßõ ¼ö 142

Á¶´ëÇù (http://bcho.tistory.com)

¼­¹®

¿¹Àü BEA³ª ¿À¶óŬ ½ÃÀý¿¡, EAI, ESB µîÀ» °¡Áö°í ½Ã½ºÅÛ°£ÀÇ ¿¬°è ¾÷¹«¸¦ ¸¹ÀÌ ÇØ¿Ô´ø ³ª·Î½á´Â ¿ÀÇ ¼Ò½º ±â¹ÝÀÇ EAI ÇÁ·¹ÀÓ¿÷ÀΠApache CamelÀÇ °æ¿ì »ó´çÈ÷ Èï¹Ì·Î¿î ÁÖÁ¦¿´´Ù. °ú¿¬ »ó¿ë Á¦Ç° ´ëºñ ¾ó¸¶³ª Çö½Ç¼ºÀִ integration ±â´ÉÀ» Á¦°øÇÒ °ÍÀΰ¡? °¡ °¡Àå Å« ±Ã±ÝÁõÀ̾ú´Ù.

BEA WebLogic EAI³ª, Oracle Service Bus, AIA µî ¿©·¯ Á¦Ç°À» ÀÌ¿ëÇؼ­ Á÷Á¢ ½Ã½ºÅÛ°£ÀÇ ¿¬°è ½Ã³ª¸®¿Àµµ ±¸ÇöÇغ¸°í, BMT¿¡¼­ ŸÞäÀÇ ¼Ö·ç¼ÇÀ» Å×½ºÆ®µµ ÇغÃÁö¸¸, ¸ÕÀú »ó¿ë ¼Ö·ç¼ÇÀÇ ¾àÁ¡Àº, ¼Ö·ç¼Ç¿¡¼­ Á¦°øÇÏ´Â ½Ã½ºÅÛ°£ÀÇ ¿¬°è¿¡ À־ ¼º´ÉÀûÀÎ Á¦¾àÀÌ ¸Å¿ì ¸¹ÀÌ µû¸¥ ´Ù´Â °ÍÀÌ´Ù. ´ëºÎºÐ Message Queue ±¸Á¶ÀÇ ºñµ¿±â ±¸Á¶¸¦ ÅëÇؼ­, ¾ç´Ü°£¿¡ µ¥ÀÌŸ ¿¬°è¸¦ ÇÏ´Â ½Ã³ª¸®¿À°¡ ¸¹Àºµ¥, ÀÌ °æ¿ì ºñÁÖ¾óÇÏ°Ô °¢ ´Ü°è¿¡ ´ëÇؼ­ ¸ð´ÏÅ͸µÀº °¡´É ÇÏÁö¸¸, ´ë±Ô¸ð 󸮿¡ À־ ºñµ¿±âÀÇ ¾àÁ¡ ¶§¹®¿¡ ¼º´ÉÀûÀÎ Á¦¾àÀÌ µû¸£°í ƯÈ÷ ´ë±Ô¸ð ¸Þ¼¼Áö 󸮿¡ À־ ±×¸® ¸Å²ô·´Áö ¸øÇß´ø °æÇèÀÌ ÀÖ´Ù. BPEL°ú °°Àº Á¦Ç°ÀÇ °æ¿ì ¾ç´Ü°£ÀÇ ¿¬µ¿ ½Ã³ª¸®¿ÀÁß, °³°³º° ¸Þ¼¼Áö¸¦ ÄܼÖÀ» ÅëÇؼ­ Æ®·¹À̽ºÇÒ ¼ö Àִµ¥, ÇÏ·ç¿¡ ¼ö¹é,¼öõ°ÇÀ» ¿¬°èÇÏ´Â °Å·¡ÀÇ °æ¿ì¿¡´Â GUI ÄܼÖÀ» ÅëÇؼ­ ¸Þ¼¼Áö¸¦ Àü´Þ ³»¿ëÀ̳ª ¿¡·¯ ³»¿ëÀ» ÃßÀûÇÑ´Ù´Â °ÍÀº ¾ÖÃÊ ºÎÅÍ ºÒ°¡´ÉÇÑ ÀÏÀÌ´Ù.

 ±×·¡¼­ ½ÇÁ¦ ÇÁ·ÎÁ§Æ® ¶§¿¡´Â ¼Û¼ö½Å ½Ã½ºÅÛÀ» ¿¬µ¿ÇÏ´Â ¾çÂÊÀÇ ¾Æ´äÅÍ (JMS, ¸ÞÀÎÇÁ·¹ÀÓ, TP ¸ð´ÏÅÍ, ERP, CRM µî ´Ù¾çÇÑ ½Ã½ºÅÛ°ú ¿¬µ¿ÀÌ ÇÊ¿äÇϱ⠶§¹®¿¡, »ó¿ë Á¦Ç°¿¡¼­ Áö¿øµÇ´Â ¾Æ´äÅÍ´Â ¸Å¿ì Áß¿äÇÏ´Ù)¿Í ±âº»ÀûÀÎ ¸Þ¼¼Áö Ç÷οì ÀÌ¿ÜÀÇ ºÎºÐÀº ´ëºÎºÐ Á÷Á¢ ±¸ÇöÇÏ¿´´Ù. ±×·¡¼­, EAI¿Í °°Àº Á¦Ç°¿¡¼­ ÇÊ¿äÇÑ ±¸Á¶¿Í ÀÌ·± °ÍÀ» ¿ä±¸ »çÇ׿¡ ¸Â°Ô ºü¸£°Ô ¸¸µé¾úÀ¸¸é ÇÏ´Â ÇÁ·¹ÀÓ¿÷ÀÌ ÀÖ¾úÀ¸¸é Çߴµ¥, Apache CamelÀ» º¸´Ï, EAI¿Í °°Àº ¿¬°è ¾÷¹«¼º ÇÁ·¹ÀÓ¿÷À¸·Î ÀûÇÕÇØ º¸ÀδÙ.

Apache CamelÀÇ Æ¯Â¡À» º¸¸é

Message Integration Framework

CamelÀº ±âº»ÀûÀ¸·Î Message Integration FrameworkÀÌ´Ù. FrameworkÀÓÀ» °­Á¶ÇÏ´Â °ÍÀº, ESB³ª EAI Á¦Ç°°ú °°Àº ¼Ö·ç¼ÇÀ̶ó±â º¸´Ù´Â À̸¦ °³¹ßÇϱâ À§ÇÑ FrameworkÀ¸·Î º¸´Â °ÍÀÌ ÀûÀýÇÏ´Ù°í ÆǴܵȴÙ.

ÀÌÀ¯´Â ESB³ª EAI´Â ¸Þ¼¼Áö ¿¬µ¿ ±â´ÉÀ» ¼öÇàÇϱâ À§ÇÑ ÄÁÅ×À̳ʰ¡ ÀÖ´Ù. (Áï ¼­¹ö°¡ ÀÖ´Ù) ¾Æ¹«·± ¿¬µ¿ ÀÎÅÍÆäÀ̽º°¡ ¾ø´õ¶óµµ, ¿¬µ¿ ÀÎÅÍÆäÀ̽º¸¦ ¼ö¿ëÇÒ ¼ö ÀÖ´Â ÄÁÅ×À̳ʰ¡ ÀÖ°í, ÀÌ ÄÁÅ×À̳ʵéÀº ¸ð´ÏÅ͸µ, ·Î±ëµîÀÇ °ü¸® ±â´ÉÀ» Á¦°øÇÑ´Ù. ±×·¯³ª CamelÀº LibraryÀÌ´Ù. ÀÚüÀûÀ¸·Î Container¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù. ´Ù¸¸, OSGI ÄÁÅ×À̳ʳª WAS, Springµî¿¡ žÀç µÇ¼­ µ¹¾Æ°¥ ¼ö ÀÖ´Ù. ½±°Ô À̾߱â Çϸé, EAI³ª ESB¿Í °°Àº ¼Ö·ç¼Ç Á¦Ç°Àº ¼­¹ö¸¦ ¼³Ä¡ÇØ¾ß ÇÏ°í, ¼­¹ö °ü¸®¸¦ À§ÇÑ °ü¸® Äܼ֠UI¸¦ Á¦°øÇÑ´Ù. CamelÀº Jar·Î µÈ ¶óÀ̺귯¸® ÀÌ´Ù.

»ó¿ë Á¦Ç° ¿¬°è¿¡´Â ÀûÀýÇÏÁö ¾Ê´Ù.

CamelÀ» º¸¸é, Å¸ ¼Ö·ç¼ÇÀ» ¿¬µ¿Çϱâ À§ÇÑ ¾Æ´äÅÍ, (Camel¿¡¼­´Â Component¶ó°í ºÎ¸¥´Ù)°¡ ÀÖ´Ù. ¾à 50¿©°³ÀÇ ¾Æ´äÅÍ°¡ ÀÖ±â´Â ÇÏÁö¸¸, ±â¾÷¿¡¼­ ¸¹ÀÌ »ç¿ëµÇ´Â ¼Ö·ç¼ÇÀÇ ¾Æ´äÅÍ´Â ÅξøÀÌ ºÎÁ·ÇÏ´Ù. ¿¹¸¦ µé¾î SAP ERP, Sieble CRM, Tuxedo, AS/400 °ú °°Àº ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ ¾Æ´äÅÍ Áö¿øÀÌ ¾ø´Ù. »ó¿ë Á¦Ç°ÀÇ °æ¿ì ÀÌ·± ¾Æ´äÅÍ Áö¿øÀÌ °­·ÂÇÏ´Ù.

¹Ý¸é, DB,FTP,HTTP,JMS¿Í °°ÀÌ ÀϹÝÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡ »ç¿ëµÇ´Â ±â¼ú¿¡ ´ëÇÑ ¾Æ´äÅÍ´Â ¸¹ÀÌ Á¦°øµÈ´Ù.

Apache CamelÀÇ ÄÁ¼Á

Apache CamelÀÇ ÄÁ¼ÁÀ» ´ë·«ÀûÀ¸·Î µµ½ÄÈ­ Çغ¸¸é ´ÙÀ½°ú °°´Ù.


Route

¸ÕÀú Route ¶ó´Â °³³äÀ» ÀÌÇØÇØ¾ß Çϴµ¥, Route´Â ¡°ÇϳªÀÇ ½Ã½ºÅÛ°£ÀÇ ¿¬µ¿ ÀÎÅÍÆäÀ̽º¡±¸¦ Á¤ÀÇÇÑ´Ù. ¿¹¸¦ µé¾î ½Ã½ºÅÛ A¿¡¼­ B·Î À¥¼­ºñ½º¸¦ ÀÌ¿ëÇؼ­ ¿¬µ¿À» Çß´Ù¸é ÀÌ°ÍÀÌ ÇϳªÀÇ Route°¡ µÈ´Ù. Route´Â 1:1 °ü°è»Ó¸¸ ¾Æ´Ï¶ó 1:NÀÇ °ü°èµµ Áö¿ø Çϴµ¥, A ½Ã½ºÅÛ¿¡¼­ B ½Ã½ºÅÛÀ¸·Î JMS·Î ¸Þ¼¼Áö¸¦ º¸³»°í, ±×ÈÄ¿¡ C ½Ã½ºÅÛÀ¸·Î FTP ÆÄÀÏ Àü¼ÛÇÏ´Â ÀÎÅÍÆäÀ̽º°¡ ÀÖ´Ù¸é, ÀÌ ¿ª½Ã ÇϳªÀÇ Route·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

Component

°¢ Route´Â Å©°Ô Component¿Í Processor·Î Á¤ÀÇ µÈ´Ù. ¿¬°è ÇÏ°íÀÚ ÇÏ´Â ¼Û½Å ½Ã½ºÅÛ°ú ¼ö½Å ½Ã½ºÅÛÀÌ ÀÖÀ»¶§, °¢ ¼Û½Å,¼ö½Å ½Ã½ºÅÛÀÇ ÁÖ¼Ò(IPµî)À» end point¶ó°í Á¤ÀÇÇϸç, Component´Â ÀÏÁ¾ÀÇ ¾Æ´äÅÍÀÇ °³³äÀ¸·Î, ¼Û¼ö½Å ½Ã½ºÅÛÀÇ ÇÁ·ÎÅäÄÝ¿¡ ¸Â´Â ÄÄÆ÷³ÍÆ®¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ¼Û½Å ½Ã½ºÅÛÀ» FTP·Î ¿¬µ¿ÇÏ°í ½Í´Ù¸é, FTP ÄÄÆ÷³ÍÆ®¸¦ , JDBC·Î ¿¬µ¿ÇÏ°í ½Í´Ù¸é, JDBC ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÄÄÆ÷³ÍÆ®´Â ¼Û½Å ½Ã½ºÅÛÀ¸·Î ºÎÅÍ ¸Þ¼¼Áö¸¦ Àоîµå¸®°í, ¼ö½Å ½Ã½ºÅÛÀ¸·Î ¸Þ¼¼Áö¸¦ Àü¼ÛÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.

Processor

¸Þ¼¼Áö¸¦ ÀÐ°í ±×³É º¸³»±â¸¸ ÇÑ´Ù¸é º° ¹®Á¦°¡ ¾ø°ÚÁö¸¸, ½Ã½ºÅÛ°£ÀÇ ¿¬µ¿¿¡´Â ¸Þ¼¼Áö¸¦ ¹ÞÀº ÈÄ¿¡ ¼ö½Å ½Ã½ºÅÛÀ¸·Î º¸³»±âÀü¿¡ ÇÏ´Ù¸øÇØ ·Î±ëÀ» ³²±â´õ¶óµµ ¹«¾ùÀΰ¡ Ç×»ó 󸮸¦ ÇÑ´Ù. ÀÌ·¸°Ô ¼Û½Å ½Ã½ºÅÛÀ¸·Î ºÎÅÍ ¹ÞÀº ¸Þ¼¼Áö¸¦ ¼ö½Å ½Ã½ºÅÛ¿¡ º¸³»±âÀü¿¡ ¹«¾ùÀΰ¡ ó¸®¸¦ ÇÏ´Â ºÎºÐÀ» Processor¶ó°í Çϴµ¥, ÀÌ Processor´Â ±× Ư¡¿¡ µû¶ó¼­ ¸î°¡Áö·Î ³ª´µ¾î Áú ¼ö ÀÖ´Ù.

1. Message Transformation

Message Format Transformation

¸Þ¼¼ÁöÀÇ Æ÷¸ËÀ» º¯°æÇÏ´Â ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ¿¹¸¦ µé¾î JSONÀ¸·Î µé¾î¿Â µ¥ÀÌŸ¸¦ XML·Î º¯°æÇÏ´Â °ÍµéÀÌ ÀÌ¿¡ ÇØ´çÇÑ´Ù.

Message Type Transformation

¸Þ¼¼ÁöÀÇ µ¥ÀÌŸ ŸÀÔÀ» º¯°æÇÑ´Ù. StringÀ¸·Î µé¾î¿Â ¸Þ¼¼Áö¸¦ jms:TextMessageTypeÀ¸·Î º¯°æÇÏ´Â µîÀÇ ÀÛ¾÷À» ¼öÇàÇÑ´Ù.

ÀÌ·¯ÇÑ ¸Þ¼¼Áö º¯È¯Àº Java Class¸¦ Á¤ÀÇÇؼ­ÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌ¿Ü¿¡µµ Camel¿¡¼­ ¹Ì¸® Á¦°øµÇ´Â Converter³ª, XSLT¸¦ ÀÌ¿ëÇÑ º¯È¯ Apache VelocityÀÇ °°Àº Template ¿£Áøµî ´Ù¾çÇÑ ¹æ¹ýÀ» ÀÌ¿ëÇؼ­ º¯È¯ÀÌ °¡´ÉÇÏ´Ù.

2. Routing

¸Þ¼¼Áö ¶ó¿ìÆÃÀº µé¾î¿Â ¸Þ¼¼Áö¸¦ ´Ù¼öÀÇ ¼ö½Å ½Ã½ºÅÛ¿¡ Á¶°Ç¿¡ µû¶ó¼­ ¶ó¿ìÆÃÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ´Ù.


Processor ´Ü°è´Â ½±°Ô »ý°¢Çϸé, ¸Þ¼¼Áö¸¦ ¹ÞÀº ÈÄ, º¸³»±âÀü¿¡ ¹«¾ùÀΰ¡.. ¸¦ ÇÏ´Â °÷ÀÌ´Ù. ¾Õ¼­ ¼³¸íÇÑ°Íó·³, ¸Þ¼¼Áö¸¦ º¯È¯Çϰųª, ¶ó¿ìÆÃÇÒ ¼ö µµ ÀÖ°í, ·Î±ëÀ» ÇÒ ¼öµµ ÀÖ´Ù. µé¾î¿Â ¸Þ¼¼Áö¿¡ ´ëÇؼ­ À¯È¿¼º °ËÁõÀ» ÇÒ ¼ö µµ ÀÖ´Ù. ÀÌ·¯ÇÑ Processor´Â ÀÚÁÖ »ç¿ëµÇ´Â ¸Þ¼¼Áö º¯È¯µîÀÇ ÆÐÅÏÀº Camel¿¡ ÀÇÇؼ­ Á¦°øµÇÁö¸¸, Java Å¬·¡½º¸¦ ±¸ÇöÇϸé, ¹«¾ùÀ̵çÁö °¡´ÉÇϱ⠶§¹®¿¡ ¸Þ¼¼Áö¿¡ ´ëÇÑ °ÅÀÇ ¸ðµç 󸮸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Â ´Ü°èÀÌ´Ù.

 

ÀÌ·¸°Ô, ¡°¼Û½Å Component à Processor à ¼ö½Å Component¡±·Î ÇϳªÀÇ Route°¡ Á¤ÀǵǴµ¥, ÀÌ·¸°Ô Route¸¦ Á¤ÀÇÇÏ¿© °´Ã¼È­ ½ÃÅ°´Â °ÍÀÌ RouteBuilderÀÌ´Ù. ÀÌ·¸°Ô RouteBuilder¿¡ ÀÇÇؼ­ »ý¼ºµÈ Route´Â CamelContext¿¡ ¹ÙÀεùÀÌ µÈ´Ù. CamelContext´Â SpringContext¿Í À¯»çÇÑ °³³äÀ¸·Î »ý°¢ÇÏ¸é µÈ´Ù. Route¿¡ ´ëÇÑ ÁýÇÕÀ̸ç, Route¿¡ ´ëÇÑ ¶óÀÌÇà »çÀÌŬ (Start up,Stop)µîÀ» °ü¸®ÇÑ´Ù.

°£´ÜÇÑ °³¹ß ¿¹Á¦

ÀÌÂë¿¡¼­ °£´ÜÇÑ ¿¹Á¦¸¦ Çϳª º¸ÀÚ. ´ÙÀ½Àº FTP·Î ¿ø°ÝÁö µð·ºÅ丮ÀÇ ÆÄÀÏÀ» Àо Local Directory¿¡ ¾²´Â Camel ApplicationÀÌ´Ù.

¸ÕÀú MavenÀ» ÀÌ¿ëÇؼ­ ´ÙÀ½°ú °°ÀÌ Camel Project¸¦ ¸¸µç ÈÄ¿¡,

mvn archetype:create -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-java -DarchetypeVersion=2.5.0 -DgroupId=camelinaction -DartifactId=order-router

´ÙÀ½°ú °°Àº Äڵ带 ±¸ÇöÇÑ´Ù.

public class MyRouteBuilder extends RouteBuilder {

    public static void main(String... args) throws Exception {

        Main.main(args);

    }



    public void configure() {

        from("ftp://userid@168.1.2.3/camel/src/?password=password&stepwise=false")

         .to("file:c:/temp/");

 

    }

}

À§ÀÇ ÄÚµå´Â RouteBuilder¸¦ ±¸ÇöÇÑ ÄÚµå·Î configure ¸Þ¼­µå¿¡¼­ FTP·Î ÆÄÀÏÀ» Àоî¿Í¼­ Local¿¡ ÀúÀåÇϴ route¸¦ Á¤ÀÇÇÑ ¿¹ÀÌ´Ù.

DSL

´«Ä¡°¡ ºü¸¥ »ç¶÷À̶ó¸é, À§ÀÇ Äڵ尡 ¸ó°¡ ÀÌ»óÇÏ´Ù´Â °ÍÀ» ´À²¼À»Áöµµ ¸ð¸£°Ú´Ù. configure ¸Þ¼­µå¾È¿¡ from(¡°¡¦.¡±).to(¡°¡¦.¡±).??

ÇÔ¼ö().ÇÔ¼ö() È£Ãâ? Java¿¡¼­ ÀÌ·± ¹®¹ýÀÌ ÀÖ¾ú´ø°¡?

Á¤È®È÷ À̾߱â Çϸé ÀÌ°Ç ÀϹÝÀûÀΠJava CodingÀÌ ¾Æ´Ï¶ó DSL (Domain Specific Language)ÀÌ´Ù. DSLÀº Ư¼ö¸ñÀûÀ¸·Î Á¤ÀÇµÈ ¾ð¾î¸¦ À̾߱â Çϴµ¥, ¿©±â¼­ »ç¿ëµÈ Java DSLÀº Route¸¦ È¿À²ÀûÀ¸·Î Á¤ÀÇÇϱâ À§Çؼ­ Camel¿¡ Á¤ÀÇµÈ ³»Àå ½ºÅ©¸³Æ® ¾ð¾îÀÌ´Ù.

ÀÌ JavaDSLÀ» ÀÌ¿ëÇÏ¸é »ó´çÈ÷ ½±°Ô Route¸¦ ±¸¼ºÇÒ ¼ö Àִµ¥, CamelÀº ÀÌ Java DSL »Ó¸¸ ¾Æ´Ï¶ó, ´ÙÀ½°ú °°ÀÌ »ó´çÈ÷ ´Ù¾çÇÑ DSLÀ» Á¦°øÇÑ´Ù.

Ÿ   Spring XML : XML ±â¹ÝÀ¸·Î Á¤ÀǵȠDSL·Î , Spring xml configuration ÆÄÀÏ¿¡ Á¤ÀÇ

Ÿ   Groovy,Scala DSL : Groovy ¾ð¾î, Scala ¾ð¾î ±â¹ÝÀÇ DSL

Ÿ   Annotation DSL : Java Annotation ±â¹ÝÀÇ DSL

Ÿ   ±âŸ (Kotlin DSL, Bluprint XML etc)

(Âü°í: http://camel.apache.org/dsl.html)

DSLÀº RouteÀÇ Processor ºÎºÐÀ» Á¤ÀÇÇϴµ¥ ÁÖ·Î »ç¿ëµÇ´Âµ¥, ¼Û¼ö½Å, Component¸¸ Á¤ÀǵǸé, »ç½Ç»ó ½Ã½ºÅÛ ¿¬°è¿¡¼­ ±¸ÇöÇØ¾ß µÇ´Â ºÎºÐÀº °ÅÀÇ ProcessorÀ̸ç, ProcessorÀÇ ·ÎÁ÷ ´ëºÎºÐÀº ¸Þ¼¼Áö ó¸®, º¯È¯,¶ó¿ìÆÿ¡ ÇØ´çÇÏ´Â ³»¿ëÀ̱⠶§¹®¿¡ Ư¼ö¸ñÀûÀÇ DSLÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ¶ÇÇÑ DSL »ç¿ëÀ» ÅëÇؼ­ °³¹ß »ý»ê¼ºÀ̳ª ÄÚµå¾çÀ» ȹ±âÀûÀ¸·Î ÁÙÀÏ ¼ö ÀÖ´Ù.

¿¹¸¦ ¸Þ¼¼Áö¸¦ ½ºÆ®¸µÀ¸·Î ¹Þ¾Æ¼­ reverseÇÏ¿©, È­¸é¿¡ Ãâ·ÂÇÏ´Â °æ¿ì Java DSLÀ» ÀÌ¿ëÇϸé

from("direct:test")

      .transform(new Expression() {

         @Override

         public Object evaluate(Exchange e) {

            return new StringBuffer(e.getIn().getBody().toString()).reverse().toString();

         }

      })

      .process(new Processor() {

         @Override

         public void process(Exchange e) {

           System.out.println(e.getIn().getBody());

         }

      });

Àε¥ ¹ÝÇؼ­, Groovy DSLÀ» »ç¿ëÇϸé

from('direct:test')

      .transform { it.in.body.reverse() }

      .process { println it.in.body }

°°ÀÌ ´ÜÁö 3ÁÙÀÌ¸é °£´ÜÇÏ°Ô ³¡³­´Ù.

Camel°ú EIP

½Ã½ºÅÛ ¿¬µ¿¿¡´Â »ç½Ç ¸¹Àº ÆÐÅϵéÀÌ ÀÖ´Ù. ¸Þ¼¼Áö º¯È¯, ¶ó¿ìÆÃ, ·Î±× ÃßÀûÀ» À§ÇÑ ±Û·Î¹ú Æ®·»Á§¼Ç ID, Àå¾Ö½Ã Àç󸮵îµî ¿©·¯°¡Áö ¹æ¹ýÀÌ Àִµ¥, À̸¦ ÆÐÅÏÈ­ ½ÃÄѳõÀº °ÍÀÌ Enterprise Integration Pattern (EIP)ÀÌ´Ù. EIP´Â


Ã¥¿¡ Àß Á¤ÀÇ µÇ¾î ÀÖÀ¸´Ï Âü°íÇϱ⠹ٶõ´Ù.

»ç½Ç Camel¿¡¼­ ¹Ý¿µ ¹× ¼³°èµÇ¾î Àִ EIPµµ ÀÌ Ã¥¿¡ ÀÖ´Â ³»¿ëÀ» ´ëºÎºÐ ¹ÙÅÁÀ¸·Î ÇÏ¿© ±¸ÇöµÇ¾î ÀÖ´Ù. (CamelÀ» ¾µ·Á¸é ÀÌÃ¥Àº ²À Çѹø ÀоîºÁ¾ß ÇÏÁö ¾ÊÀ»±î ½Í´Ù.)

 

Âü°í : http://camel.apache.org/enterprise-integration-patterns.html ¿¡ °£´ÜÇÏ°Ô ´ëÇ¥ÀûÀΠEIP µéÀÌ Á¤¸®µÇ¾î ÀÖ´Ù.

»ó¿ë Áö¿ø

¿ÀǼҽº°¡ ¹«·áÀÌ¶ó¼­ Àú ºñ¿ëÀÇ ÀåÁ¡À» °¡Áö°í ÀÖÁö¸¸, ¹Ý´ë·Î, ¿ÀǼҽº´Â ±â¼úÁö¿øÀ̳ª ±³À° ºÎºÐ¿¡¼­ ¸Å¿ì Ãë¾àÇÏ´Ù. ±×·¡¼­ RedHat°ú °°ÀÌ ¿ÀǼҽº Á¦Ç°¿¡ ´ëÇؼ­ subscription base·Î ±â¼ú Áö¿øÀ̳ª ±³À° ¹× ÄÁ¼³ÆÃÀ» Á¦°øÇϴ ȸ»çµéÀÌ Á¸ÀçÇϴµ¥, Apache Camel ¿ª½Ã http://fusesource.com/ ´Â °÷¿¡¼­ »ó¿ë ±â¼ú Áö¿øÀ» ¹ÞÀ» ¼ö ÀÖ´Ù. (¾ó¸¶Àü¿¡ Redhat¿¡ ÀμöµÇ¾ú´Ù.) Fuse SourceÀÇ °æ¿ì, CamelÀ» ÀÌ¿ëÇÏ¿© Á¦Ç°À» ¸¸µé¾î¼­ ÆǸÅÇÏ°í ÀÖÀ¸¸ç, Camel ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ°í Àִ Commiter µéÀ» ¸¹ÀÌ º¸À¯ÇÏ°í ÀÖ´Ù°í ÇÑ´Ù.

http://fusesource.com/products/enterprise-camel/ µé¾î°¡¸é Fuse Source¿¡¼­ °³¹ß ¹× ÆǸÅÇÏ´Â »ó¿ë CamelÀ» ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, °³¹ß °ü·Ã ¹× Æ®·¹ÀÌ´× ÀÚ·áµéÀ» »ìÆ캼 ¼ö ÀÖ´Ù.

°á·Ð

ªÀº ½Ã°£³»¿¡ »ìÆ캻 Á¦Ç°ÀÌ¶ó¼­ ¾ÆÁ÷ ¿Ïº®ÇÑ Æ¯¼ºÀº ÆľÇÇÏÁö´Â ¸øÇß´Ù. ±×·¯³ª EAI³ª, ESB¿Í °°ÀÌ ¸Þ¼¼Áö ±â¹ÝÀÇ ¿¬µ¿ 󸮸¦ Çϱâ À§ÇÑ ½Ã½ºÅÛÀ» °³¹ßÇÑ´Ù¸é, °³¹ß ÇÁ·¹ÀÓ¿÷À¸·Î ÃæºÐÈ÷ È°¿ëÇÒ¸¸ ÇÏ´Ù. Æ¯È÷ ¿£ÅÍÇÁ¶óÀÌÁîÀÇ Æ¯Á¤ ¾ÖÇø®ÄÉÀ̼Ǡ(ERP,CRM)µîÀÌ ¾Æ´Ï¶ó ÀϹÝÀûÀÎ ÇÁ·ÎÅäÄÝ (HTTP,JMS,TCP)µîÀ» »ç¿ëÇÏ¿© ±×¸® º¹ÀâÇÏÁö ¾ÊÀ¸¸é¼­ °í¼ÓÀÇ ¿¬µ¿ 󸮸¦ ÇÊ¿ä·Î ÇÑ´Ù¸é ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó ÆǴܵȴÙ.

½Ã°£ °ü°è»ó ¿¡·¯Ã³¸®, ¸ð´ÏÅ͸µ, ¹èÆ÷ ¹× È®À强µî ¿î¿µ °üÁ¡¿¡ ´ëÇÑ ºÎºÐÀº ±í°Ô »ìÆ캸Áö ¸øÇßÁö¸¸, ±×³É °³¹ß ÇÁ·¹ÀÓ¿÷À¸·Î º»´Ù¸é, ¾îÂ¥ÇÇ ¿î¿µ °ü·Ã ºÎºÐÀº Á÷Á¢ ±¸ÇöÇØ¾ß Çϴϱî´Â ±¦ÂúÁö ¾ÊÀ»±î ½Í´Ù.

´Ù¸¸ ´Ü¼øÈ÷ ÇÁ·¹ÀÓ¿÷À̱⠶§¹®¿¡, Å¬·¯½ºÅ͸µ ±â¹ÝÀÇ HA³ª ºÎÇÏ ºÐ»êµîÀÇ ±â´ÉÀ» Á¦°øÇÏÁö ¾Ê´Â °ÍÀÌ ¾Æ½¬¿î Á¡ÀÌ´Ù.

½Ã½ºÅÛ°£ÀÇ ¿¬µ¿ÀÇ Á߿伺°ú ÆíÀ̼ºÀ» °æÇèÇÑ ³ªÇÑÅ×´Â, Apache CamelÀº ¡°¹°°ÇÀº ¹°°ÇÀÌ´Ù.¡± ¶ó´Â °á·ÐÀÌ ÀûÀýÇÏ´Ù°í³ª ÇÒ±î?

 

ErrorHandling - http://bcho.tistory.com/716


Âü°í:ErrorHandling¿¡ ´ëÇÑ °ü·Ã±Û -

http://www.consulting-notes.com/2010/08/camel-exception-handling-overview.html 

Á¤¸®°¡ ÀߵǾî ÀÖ³×...

 



Ãâó: http://bcho.tistory.com/715 [Á¶´ëÇùÀÇ ºí·Î±×]