Apache Camel - Điểm cuối

Chúng tôi đã tìm hiểu về cách các điểm cuối trông như thế nào trong mã tích hợp của chúng tôi. Các biểu thức mà chúng tôi đã sử dụng cho đến nay, chẳng hạn nhưfile:/order, jms:orderQueue, direct:distributeOrderDSLlà các điểm cuối. Như bạn thấy, chúng tuân theo các định dạng đặc tả URI. Trong khi đánh giá URI này,CamelContext tạo ra Endpointví dụ; bạn không cần phải lo lắng về việc khởi tạoEndpoint triển khai trong DSL của bạn.

Lấy các ví dụ trước đó của chúng tôi, bạn chỉ định các điểm cuối trong Java DSL như ở đây -

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

Và vào mùa Xuân như đây -

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

Trong cả hai trường hợp, điểm cuối là một chuỗi không đổi. Trong một số trường hợp nhất định, bạn có thể muốn xây dựng chuỗi này trong thời gian chạy. Bạn có thể làm như vậy bằng cách sử dụng JavaStringcác phương pháp định dạng. Camel cung cấp một cách tiếp cận khác đơn giản hơn để tạo các chuỗi URI này trong thời gian chạy. Với mục đích này, Camel cung cấpfromFtoFcác phương thức chấp nhận các đối số với các tham số do người dùng chỉ định. Câu lệnh sau minh họa việc sử dụngtoF phương pháp -

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

Do các phương pháp này, nhu cầu sử dụng Java tích hợp String các phương thức định dạng bị xóa.

Camel sử dụng ngôn ngữ Đơn giản theo mặc định để tính toán biểu thức điểm cuối. CácSimple ngôn ngữ được thiết kế chủ yếu để đánh giá ExpressionsPredicatesmà không cần bận tâm nhiều về sự phức tạp của XPath. Để đánh giá các vị từ, bạn có thể kết hợp một ngôn ngữ khác, chẳng hạn nhưxpath với mặc định Simplengôn ngữ. Điều này được thực hiện bằng cách sử dụng dấu cộng để phân tách ngôn ngữ khác. Đoạn mã ở đây cho biết cách nốixpath chuỗi vào biểu thức được viết bằng Simple.

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

Trong Spring, bạn có thể đạt được điều tương tự như ở đây -

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

Bạn có thể ghép bao nhiêu ngôn ngữ tùy thích, mỗi ngôn ngữ được phân tách bằng dấu cộng với ngôn ngữ trước đó. Danh sách các ngôn ngữ được hỗ trợ có thể được tìm thấy tại đây .