Apache Camel - จุดสิ้นสุด

เราได้เรียนรู้ว่าจุดสิ้นสุดมีลักษณะอย่างไรในรหัสการผสานรวมของเรา นิพจน์ที่เราใช้จนถึงตอนนี้เช่นfile:/order, jms:orderQueue, direct:distributeOrderDSLคือจุดสิ้นสุด อย่างที่คุณเห็นพวกเขาเป็นไปตามรูปแบบข้อกำหนด URI ในขณะที่ประเมิน URI นี้ไฟล์CamelContext สร้างไฟล์ Endpointตัวอย่าง; คุณไม่จำเป็นต้องกังวลเกี่ยวกับการสร้างอินสแตนซ์Endpoint การนำไปใช้ใน DSL ของคุณ

จากตัวอย่างก่อนหน้านี้คุณระบุจุดสิ้นสุดใน Java DSL ดังที่นี่ -

from ("file:/order").to("jms:orderQueue");

และในฤดูใบไม้ผลิที่นี่ -

<route>
   <from uri = "file:/order"/>
   <to uri = "jms:orderQueue"/>
</route>

ในทั้งสองกรณีจุดสิ้นสุดคือสตริงคงที่ ในบางกรณีคุณอาจต้องการสร้างสตริงนี้ในรันไทม์ คุณสามารถทำได้โดยใช้ JavaStringวิธีการจัดรูปแบบ Camel มีแนวทางที่ง่ายกว่าในการสร้างสตริง URI เหล่านี้ขณะรันไทม์ เพื่อจุดประสงค์นี้ Camel จัดให้fromF และ toFวิธีการที่ยอมรับอาร์กิวเมนต์ด้วยพารามิเตอร์ที่ผู้ใช้ระบุ คำสั่งต่อไปนี้แสดงให้เห็นถึงการใช้toF วิธีการ -

from("direct:distributeOrderDSL”).toF("file://%s?fileName=%s", path, name);

เนื่องจากวิธีการเหล่านี้จำเป็นต้องใช้ Java ในตัว String วิธีการฟอร์แมตเตอร์เป็นแบบ obviated

Camel ใช้ภาษาที่เรียบง่ายตามค่าเริ่มต้นเพื่อคำนวณนิพจน์ปลายทาง Simple ภาษาได้รับการออกแบบมาเพื่อประเมินเป็นหลัก Expressions และ Predicatesโดยไม่ต้องกังวลมากเกี่ยวกับความซับซ้อนของ XPath. สำหรับการประเมินเพรดิเคตคุณสามารถรวมภาษาอื่นเช่นxpath ด้วยค่าเริ่มต้น Simpleภาษา. ซึ่งทำได้โดยใช้เครื่องหมายบวกเพื่อแยกภาษาอื่น ข้อมูลโค้ดที่นี่แสดงวิธีการเชื่อมต่อxpath สตริงไปยังนิพจน์ที่เขียนด้วย Simple.

from("direct:start")
.toD("jms:${orderQueue}+language:xpath:/order/@id");

ใน Springคุณสามารถบรรลุได้เช่นเดียวกับที่นี่ -

<route>
   <from uri = "direct:start"/>
   <toD uri = "jms:${orderQueue}+language:xpath:/order/@id"/>
</route>

คุณสามารถเชื่อมต่อภาษาได้มากเท่าที่คุณต้องการโดยแต่ละภาษาคั่นด้วยเครื่องหมายบวกจากภาษาก่อนหน้า รายการภาษาที่สนับสนุนสามารถพบได้ที่นี่