JBoss Fuse - อาปาเช่อูฐ

ในบทนี้เราจะพูดถึง Apache Camel คืออะไรและจะกำหนดเส้นทางข้อมูลระหว่างจุดสิ้นสุดได้อย่างมีประสิทธิภาพพร้อมกับตัวอย่างบางส่วน

Apache Camel คืออะไร?

Apache Camel เป็นเฟรมเวิร์กการรวมโอเพนซอร์สซึ่งเริ่มต้นในต้นปี 2550

เป็นแนวทางตาม EIP (Enterprise Integration Pattern) ซึ่งนำเสนอการใช้งานรูปแบบนอกกรอบหลายรูปแบบที่สามารถใช้เพื่อแก้ปัญหาการรวมองค์กร EIP ไม่ใช่เพียงวิธีการแก้ปัญหาที่ได้รับการพิสูจน์แล้วสำหรับปัญหาที่มีการจัดทำเอกสารและเกิดซ้ำในการรวมองค์กร

Camel เป็นที่รู้จักกันในชื่อเครื่องมือกำหนดเส้นทางและสื่อกลางเนื่องจากจะกำหนดเส้นทางข้อมูลระหว่างจุดสิ้นสุดได้อย่างมีประสิทธิภาพในขณะที่รับภาระหนักเช่นการแปลงรูปแบบข้อมูลการเชื่อมต่อปลายทางและอื่น ๆ อีกมากมาย

ตัวอย่างพื้นฐาน

ข้อกำหนดเบื้องต้นในการใช้ Apache Camel คือ -

  • Java
  • Maven
  • Redhat JBoss ฟิวส์ 6.1-GA-379

สร้างโครงกระดูกพื้นฐานของแอปพลิเคชัน

mvn:archetype generate 
–DgroupId = com.tutorialpoint.app 
–DartifactId = camel-first-app 
–DarchetypeGroupId = org.apache.camel.archetypes
–DarchetypeArtifactId = camel-archetype-spring 
–DinteractiveMode = false -X

สิ่งนี้ควรสร้างโครงสร้างไดเร็กทอรีต่อไปนี้

นี่คือโครงกระดูกพื้นฐานของแอปพลิเคชัน Camel ของเราที่สร้างขึ้น

แก้ไข camel-context.xml

แก้ไข camel-first-app → src → main → resources → META-INF\spring\camel-context.xml ให้ตรงตามด้านล่าง

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring
   http://camel.apache.org/schema/spring/camel-spring.xsd">

   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input file
         (leaving them in place - see the 'noop' flag) 
         then performs content based routing on the message using XPath -->
			
      <route>
         <from uri = "file:///d:/src/data?noop=false"/>
         <choice>
            <when>
               <xpath>/person/city = 'London'</xpath>
               <log message = "UK message"/>
               <to uri = "file:///d:/target/messages/uk"/>
            </when>
				
            <otherwise>
               <log message = "Other message"/>
               <to uri = "file:///d:/target/messages/others"/>
            </otherwise>
				
         </choice>
			
      </route>
   </camelContext>
</beans>

แก้ไข pom.xml

เพิ่มรหัสต่อไปนี้ใน <plugins> </plugins>

<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>2.3.4</version>
   <extensions>true</extensions>
	
   <configuration>
      <instructions>
         <Bundle-SymbolicName>
            ${project.artifactId}
         </Bundle-SymbolicName>
         <Import-Package>*</Import-Package>
      </instructions>
   </configuration>
	
</plugin>

เปลี่ยนประเภทบรรจุภัณฑ์จาก jar → bundle.

<packaging>bundle</packaging>

สร้างโครงการโดยใช้คำสั่งต่อไปนี้ -

mvn clean install

ติดตั้งโครงการลงในฟิวส์

เริ่มฟิวส์โดยใช้ Fuse.bat/start.bat. หากคุณเริ่ม Fuse โดยใช้ไฟล์start.bat, ใช้ client.batเพื่อเชื่อมต่อกับ Fuse คุณควรได้รับ UI ดังที่แสดงในภาพหน้าจอต่อไปนี้

นี่คือ CLI สำหรับการเข้าถึงคำสั่ง Karaf และ Fuse

install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT

ทดสอบว่าโครงการของคุณกำลังทำงานอยู่หรือไม่

ตอนนี้ควรติดตั้งแอปพลิเคชันของคุณใน Fuse คัดลอกไดเร็กทอรีข้อมูลภายในcamel-first-app และวางไว้ใน D:/src/ และควรคัดลอกข้อความที่มีเมือง = ลอนดอนลงใน D:/target/merssages/uk.

วางไฟล์อินพุตใน D:/src/data

Input

Message1.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

Message2.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>

Output

ใน D: / target / messages / uk

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

ใน D: / เป้าหมาย / ข้อความ / อื่น ๆ

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>