Apache Camel - Tổng quan
Camel là một hộp đen nhận tin nhắn từ một số điểm cuối và gửi nó đến một điểm cuối khác. Trong hộp đen, các tin nhắn có thể được xử lý hoặc chuyển hướng đơn giản.
Vậy tại sao phải có một khuôn khổ cho việc này? Trong các tình huống thực tế như đã thấy trong nghiên cứu điển hình giới thiệu, có thể có nhiều người gửi và nhiều người nhận, mỗi người tuân theo giao thức riêng của nó như ftp, http và jms. Hệ thống có thể yêu cầu nhiều quy tắc phức tạp chẳng hạn như tin nhắn từ người gửi A chỉ được gửi cho B & C. Trong các tình huống, bạn có thể phải dịch tin nhắn sang định dạng khác mà người nhận mong đợi. Bản dịch này có thể tuân theo các điều kiện nhất định dựa trên nội dung thư. Vì vậy, về cơ bản bạn có thể cần phải dịch giữa các giao thức, các thành phần kết dính với nhau, xác định các quy tắc định tuyến và cung cấp tính năng lọc dựa trên nội dung thư. Điều này được minh họa trong hình sau:
Để đáp ứng các yêu cầu trên và thiết kế một kiến trúc phần mềm thích hợp cho nhiều trường hợp như vậy, các Mẫu Tích hợp Doanh nghiệp ( EIP ) đã được Gregor Hohpe và Bobby Woolf ghi lại vào năm 2003. Apache Camel cung cấp cách triển khai các mẫu này và mục đích của hướng dẫn này là dạy bạn làm thế nào để sử dụng Camel trong các tình huống như mô tả trong phần giới thiệu.
Apache Camel là một khung công tác mã nguồn mở. Nó là một phần mềm trung gian hướng tin nhắn cung cấp công cụ dàn xếp và định tuyến dựa trên quy tắc. Bạn có thể xác định các quy tắc chẳng hạn như nếu đơn đặt hàng "sữa" chuyển hướng nó đến một nhà cung cấp sữa và nếu nó là một đơn đặt hàng "dầu", hãy chuyển hướng nó đến một nhà cung cấp dầu, v.v. Sử dụng Camel, bạn sẽ có thể triển khai các quy tắc này và thực hiện định tuyến bằng mã Java quen thuộc. Nó có nghĩa là bạn có thể sử dụng Java IDE quen thuộc của mình để xác định các quy tắc này trong một môi trường an toàn kiểu. Chúng tôi không cần sử dụng các tệp cấu hình XML, các tệp này thường có xu hướng cồng kềnh. Camel mặc dù hỗ trợ cấu hình XML thông qua Spring framework, nếu bạn thích sử dụng XML để định cấu hình các quy tắc. Bạn thậm chí có thể sử dụng các tệp Cấu hình XML của Blueprint và thậm chí là Scala DSL, nếu bạn là người yêu thích Scala. Điều đó cũng có nghĩa là bạn có thể sử dụng Java, Scala IDE yêu thích của mình hoặc thậm chí là một trình soạn thảo XML đơn giản để định cấu hình các quy tắc.
Đầu vào cho công cụ này có thể là tệp văn bản được phân tách bằng dấu phẩy, POJO (Đối tượng Java cũ thuần túy), XML là bất kỳ định dạng nào trong số một số định dạng khác được Camel hỗ trợ. Tương tự, đầu ra của động cơ có thể được chuyển hướng đến một tệp, đến hàng đợi tin nhắn hoặc thậm chí màn hình điều khiển của bạn để bạn xem các đơn đặt hàng được gửi đến các nhà cung cấp tương ứng. Chúng được gọi là các điểm cuối và Camel hỗ trợ mẫu EIP Điểm cuối Thông báo . Các điểm cuối của lạc đà sẽ được thảo luận sau trong chương Điểm cuối.
Camel thường được sử dụng với Apache ServiceMix , Apache ActiveMQ và Apache CXF để triển khai các kiến trúc hướng dịch vụ.