Apache Camel Overview
Á¶´ëÇù (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 [Á¶´ëÇùÀÇ ºí·Î±×]