Apache Camel - โครงการ
เราจะใช้ Maven เพื่อสร้างโครงการ Camel แม้ว่าเราควรใช้ IntelliJ IDE ในการพัฒนามากกว่า คุณสามารถใช้ IDE ใดก็ได้ที่คุณเลือกสำหรับโครงการนี้
การสร้างโครงการใหม่
สร้างไฟล์ Maven โครงการและระบุสิ่งต่อไปนี้ -
GroupId: Basket
ArtifactId: Basket
เลือกตำแหน่งเริ่มต้นสำหรับโครงการของคุณหรือหากคุณต้องการระบุไดเร็กทอรีที่คุณต้องการ
การเพิ่มการอ้างอิง
คุณต้องเพิ่มการอ้างอิงเล็กน้อยเพื่อใช้ Camel การอ้างอิงจะถูกเพิ่มเข้ามาpom.xml. ดังนั้นเปิด pom.xml และเพิ่มการอ้างอิงสองรายการต่อไปนี้ -
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies>
Note- เราต้องการการอ้างอิงขั้นต่ำสำหรับแอปพลิเคชันของเรา เมื่อคุณใช้ส่วนประกอบ Camel จากไลบรารีมากขึ้นคุณจะต้องเพิ่มการอ้างอิงที่เกี่ยวข้องในไฟล์ pom.xml นี้
การสร้าง Java DSL
จากนั้นคุณจะเขียนโค้ดการกรองและการกำหนดเส้นทางของคุณใน Java DSL สร้างคลาส Java ใหม่ที่เรียกว่าDistributeOrderDSL. เพิ่มรหัสต่อไปนี้ -
public class DistributeOrderDSL {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
try {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:DistributeOrderDSL")
.split(xpath("//order[@product='soaps']/items")).to("stream:out");
// .to("file:src/main/resources/order/");
}
});
context.start();
ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
.getResource("order.xml").getFile());
orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);
} finally {
context.stop();
}
}
}
ใน main วิธีแรกเราสร้าง CamelContext โดยการสร้างอินสแตนซ์การใช้งานเริ่มต้นที่มีให้ใน DefaultCamelContext ชั้นเรียน
CamelContext context = new DefaultCamelContext();
ต่อไปเราจะเพิ่มเส้นทางโดยการสร้างแบบไม่ระบุตัวตน RouteBuilder อินสแตนซ์ -
context.addRoutes(new RouteBuilder() {
เราลบล้างไฟล์ configure วิธีการเพิ่มเส้นทางจาก URI โดยตรง DistributeOrderDSLไปยังคอนโซลระบบ เราจัดเตรียมการกรองบางอย่างโดยใช้แบบสอบถาม xpath
public void configure() throws Exception {
from("direct:DistributeOrderDSL")
.split(xpath("//order[@product = 'soaps']/items")).to("stream:out");
// .to("file:src/main/resources/order/");
}
หลังจากเพิ่มเส้นทางเราเริ่มบริบท -
context.start();
ต่อไปเราจะเพิ่มรหัสสำหรับสร้าง URI โดยตรงของเรา - DistributeOrderDSL.
ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
.getResource("order.xml").getFile());
ในที่สุดเราก็เริ่มการประมวลผล -
orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);
เมื่อโค้ด Java DSL ของคุณเสร็จสมบูรณ์สิ่งเดียวที่ยังคงอยู่ก่อนที่จะทดสอบแอปพลิเคชันคือการเพิ่มไฟล์ order.xmlไฟล์ไปยังโครงการของคุณ คุณสามารถใช้ XML ตัวอย่างที่แสดงในบทแนะนำเพื่อจุดประสงค์นี้
ผลการทดสอบ
เมื่อคุณเรียกใช้แอปพลิเคชันคุณจะเห็นผลลัพธ์ต่อไปนี้ -
<items>
<item>
<Brand>Cinthol</Brand>
<Type>Original</Type>
<Quantity>4</Quantity>
<Price>25</Price>
</item>
<item>
<Brand>Cinthol</Brand>
<Type>Lime</Type>
<Quantity>6</Quantity>
<Price>30</Price>
</item>
</items>
โปรดทราบว่าเฉพาะคำสั่งซื้อสบู่เท่านั้นที่ระบุไว้ที่นี่ หากคุณต้องการจัดเก็บสิ่งนี้ลงในไฟล์ในเครื่องเพียงแค่แสดงความคิดเห็นที่ไฟล์stream.out บรรทัดและยกเลิกการใส่ข้อคิดเห็นบรรทัดต่อไปนี้ในไฟล์ configure วิธีการ -
// .to("file:src/main/resources/order/");
ในส่วนต่อไปเราจะเรียนรู้วิธีใช้ Camel กับ Spring