Câu hỏi Chính xác thì Apache Camel là gì?


Tôi không hiểu chính xác Lạc đà làm.

Nếu bạn có thể đưa ra 101 từ một lời giới thiệu về Camel:

  • Chính xác thì nó là gì?
  • Làm thế nào nó tương tác với một ứng dụng được viết bằng Java?
  • Có cái gì đó đi cùng với máy chủ?
  • Đây có phải là một chương trình độc lập không?

Vui lòng giải thích Camel là gì.


1140
2018-01-13 02:32


gốc




Các câu trả lời:


Nếu bạn có từ 5 đến 10 phút, tôi thường khuyên mọi người nên đọc Tích hợp với Apache Camel bởi Jonathan Anstey. Đây là một đoạn văn được viết tốt để giới thiệu ngắn gọn và tổng quan về một số khái niệm của Camel, và nó thực hiện một ca sử dụng với các mẫu mã. Trong đó, Jonathan viết:

Apache Camel là một khung công tác Java mã nguồn mở tập trung vào việc làm cho việc tích hợp dễ dàng hơn và dễ tiếp cận hơn đối với các nhà phát triển. Nó thực hiện điều này bằng cách cung cấp:

  • triển khai cụ thể của tất cả các sử dụng rộng rãi Mẫu tích hợp doanh nghiệp (EIP)
  • kết nối với nhiều loại phương tiện và API
  • dễ sử dụng các Ngôn ngữ Cụ thể của Miền (DSL) để kết nối các EIP và vận chuyển cùng nhau

Ngoài ra còn có một chương miễn phí Camel in Action trong đó giới thiệu Camel trong chương đầu tiên. Jonathan là đồng tác giả của cuốn sách đó với tôi.


598
2018-01-13 10:49



Cuốn sách Camel in Action là một cuốn sách rất hay để tìm hiểu những điều cơ bản và cách sử dụng một số tính năng phức tạp hơn của Camel. Tôi khuyên bạn nên nó! (Tôi không liên kết với cuốn sách hoặc nhà xuất bản) - aldridmc
@Clause nếu muốn chọn giữa con la ESB & Camel. những gì nên được demacation của tôi trên lựa chọn một ove khác - kuhajeyan
Xem một số liên kết tại so sánh với các đối thủ cạnh tranh của Camels tại: camel.apache.org/articles.html. - Claus Ibsen
Vì vậy, nó có thể được sử dụng để kết nối, nói, microservices? - dotslash
Có, nó hoàn toàn có thể được sử dụng để kết nối microservices, sau khi tất cả chỉ là một bộ công cụ / khung công tác Java nhỏ. Cuốn sách phiên bản Camel in Action 2 có một chương đầy đủ về Camel microservices. - Claus Ibsen


Của tôi để mô tả điều này theo một cách dễ tiếp cận hơn ...

Để hiểu được Apache Camel là gì, bạn cần hiểu những mẫu tích hợp doanh nghiệp nào.

Hãy bắt đầu với những gì chúng tôi có lẽ đã biết: Mẫu Singleton, mẫu Nhà máy, v.v. Họ chỉ đơn thuần là cách tổ chức giải pháp của bạn cho vấn đề, nhưng chúng không phải là giải pháp. Những mẫu này đã được phân tích và trích xuất cho phần còn lại của chúng tôi bởi Gang of Four, khi họ xuất bản cuốn sách của họ: Mẫu thiết kế. Họ đã cứu một số nỗ lực to lớn của chúng tôi trong việc suy nghĩ về cách cấu trúc tốt nhất mã của chúng tôi.

Giống như Gang of Four, Gregor Hohpe và Bobby Woolf là tác giả của cuốn sách Mẫu tích hợp doanh nghiệp (EIP) trong đó họ đề xuất và ghi lại một tập hợp các mẫu mới và bản thiết kế về cách chúng tôi có thể tốt thiết kế các hệ thống dựa trên thành phần lớn, nơi các thành phần có thể chạy trên cùng một quy trình hoặc trong một máy tính khác.

Về cơ bản, họ đề xuất rằng chúng tôi cấu trúc hệ thống của mình thông điệp định hướng - nơi các thành phần giao tiếp với nhau bằng cách sử dụng các thông điệp như đầu vào và đầu ra và hoàn toàn không có gì khác. Chúng cho chúng ta thấy một bộ mẫu hoàn chỉnh mà chúng ta có thể lựa chọn và thực hiện trong các thành phần khác nhau của chúng ta sẽ cùng nhau tạo thành toàn bộ hệ thống.

Vì vậy, Apache Camel là gì?

Apache Camel cung cấp cho bạn các giao diện cho các EIP, các đối tượng cơ bản, các triển khai phổ biến, công cụ gỡ lỗi, hệ thống cấu hình và nhiều người trợ giúp khác.

Đi MVC. MVC là khá đơn giản trong lý thuyết và chúng tôi có thể thực hiện nó mà không cần bất kỳ sự giúp đỡ khung. Nhưng các khung MVC tốt cung cấp cho chúng ta cấu trúc sẵn sàng để sử dụng và đã đi xa hơn và nghĩ ra tất cả những thứ "phụ" khác mà bạn cần khi tạo một dự án MVC lớn và đó là lý do tại sao chúng tôi sử dụng chúng hầu hết thời gian.

Đó chính xác là những gì Apache Camel dành cho EIP. Đó là một khuôn khổ hoàn thiện sản xuất dành cho những người muốn thực hiện giải pháp của họ để tuân theo các EIP.


934
2017-07-18 11:38



Đây có lẽ là câu trả lời hay nhất cho câu hỏi. Tất cả các câu trả lời khác cũng khó hiểu như tất cả các bài viết khác trên internet - Nerrve
EIP là chìa khóa. Nếu bạn không hiểu EIP, bạn có thể sử dụng Lạc đà như người mù và voi (lạc đà). EIP - eaipatterns.com - hutingung
+50 cho câu trả lời này - bắt đầu với phần giới thiệu EIP và tương tự với GOF và MVC & framework. Từ câu hỏi, có vẻ như OP không có ý tưởng về EIP. Tôi đã ở cùng một chiếc thuyền, trước khi đọc câu trả lời này - Java Geek
Mô tả này nên được thêm vào trang chủ Apache Camel vì nó trả lời câu hỏi và sau đó một số câu hỏi. Chính xác là việc sử dụng tương tự với MVC được viết tay hoặc sử dụng 'công cụ' để hỗ trợ làm câu trả lời này đã giúp tôi hiểu và không cần phải tìm kiếm thông qua các liên kết hữu ích (hữu ích) khác. câu trả lời. - Azkuma
Một số vấn đề về EIP: "Đã có rất nhiều thư viện và khung công tác trong nhiều năm để trợ giúp cho việc tích hợp. Nhưng thường xuyên các khái niệm đằng sau các mẫu tích hợp doanh nghiệp được chuyển đổi thành một số thứ bậc lớp phức tạp hoặc các đối tượng cần được kết nối với nhau và các ý định và mẫu ban đầu thường bị mất. Nhà phát triển buộc phải tập trung vào chi tiết cấp thấp và API thư viện lớp phức tạp, mất hình ảnh và mẫu lớn hơn. " - Quan Nguyen


Tạo ra một mô tả dự án không nên phức tạp.

Tôi nói:

Apache Camel là công nghệ nhắn tin gắn với định tuyến. Nó kết hợp với nhau các điểm bắt đầu và điểm kết thúc cho phép chuyển tải các thông điệp từ các nguồn khác nhau đến các đích khác nhau. Ví dụ: JMS -> JSON, HTTP -> JMS hoặc chuyển đổi FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia nói:

Apache Camel là một định tuyến dựa trên quy tắc và công cụ hòa giải cung cấp một đối tượng Java dựa trên việc thực hiện các mẫu tích hợp doanh nghiệp bằng cách sử dụng API (hoặc Ngôn ngữ cụ thể của miền Java) để định cấu hình các quy tắc định tuyến và dàn xếp. Ngôn ngữ cụ thể của miền có nghĩa là Apache Camel có thể hỗ trợ hoàn thành loại thông minh hoàn toàn các quy tắc định tuyến trong IDE của bạn bằng cách sử dụng mã Java thông thường mà không cần một lượng lớn tệp cấu hình XML; mặc dù cấu hình XML bên trong Spring cũng được hỗ trợ.

Xem? Đó không phải là khó?


636
2018-05-31 15:37



Trang chủ Apache Camel đề cập đến chủ đề này ... Họ không quản lý để cung cấp giải thích ngắn về chức năng của sản phẩm của riêng họ. - youri
Bài viết này là một ví dụ điển hình về cách phê bình mang tính xây dựng và nỗ lực trung thực có thể tạo ra tài liệu tuyệt vời. Nó là một đặc trưng trên trang web Camel chính thức. Nhưng hãy giữ nó mang tính xây dựng và tránh gắn thẻ tên. Các nhà văn tài liệu và những người đóng góp khác đôi khi khó có thể đi cùng, và họ đáng được tôn trọng. BTW - chúng tôi có nhiều tiêu chuẩn mã hóa java ... và gắn bó với niềm tự hào và danh dự ... làm thế nào về một tiêu chuẩn tài liệu cho các phương tiện như Wiki và Hướng dẫn chính thức? - YoYo
Nó giống như một proxy đảo ngược tốt? - Asad Hasan
Cảm ơn bạn đã de-buzz-wording nó cho tôi - slaxor
Bây giờ, đây là những gì tôi gọi là sắc nét và để trả lời điểm. Kỳ lạ thay, câu trả lời được chấp nhận trông giống như một quảng cáo. +1 - EMM


Nói ngắn gọn:

Khi có yêu cầu kết nối / tích hợp hệ thống, có thể bạn sẽ cần phải kết nối với một số nguồn dữ liệu và sau đó xử lý dữ liệu này để phù hợp với yêu cầu kinh doanh của bạn.

Để làm điều đó:

1) Bạn có thể phát triển chương trình tùy chỉnh sẽ thực hiện (có thể tốn thời gian và khó hiểu, duy trì cho nhà phát triển khác)

2) Ngoài ra, bạn có thể sử dụng Apache Camel để thực hiện theo cách tiêu chuẩn (nó có hầu hết các trình kết nối đã được phát triển cho bạn, bạn chỉ cần thiết lập và cắm logic của bạn - được gọi là Process):

Camel sẽ giúp bạn:

  1. Tiêu thụ dữ liệu từ bất kỳ nguồn / định dạng nào
  2. Xử lý dữ liệu này
  3. Dữ liệu đầu ra cho bất kỳ nguồn / định dạng nào

Bằng cách sử dụng Apache Camel, bạn sẽ dễ dàng hiểu / duy trì / mở rộng hệ thống của mình cho một nhà phát triển khác.

Apache Camel được phát triển với các mẫu tích hợp doanh nghiệp. Các mẫu giúp bạn tích hợp hệ thống theo cách tốt :-)


107
2018-06-04 20:48



Điều đó có nghĩa là các nhà phát triển khác cũng có thể thay đổi logic trong một ngôn ngữ lập trình khác? - JavaTechnical
@JavaTechnical đã cung cấp mẫu tin nhắn (EIP), bạn đã có thể viết mã các thành phần khác nhau bằng các ngôn ngữ khác nhau bởi vì các thư này ở dạng ngôn ngữ độc lập như JSON. Camel cung cấp một khuôn khổ dễ dàng để thực hiện EIP. Điều này dựa trên sự hiểu biết của tôi. Vui lòng sửa tôi nếu tôi nhầm. - Dheeraj Bhaskar


Sơ đồ tốt hơn hàng nghìn mô tả. Sơ đồ này minh họa kiến ​​trúc của Camel.

enter image description here


66
2017-12-27 02:48





Camel gửi tin nhắn từ A đến B:

enter image description here

Tại sao lại là toàn bộ khung công tác này? Vâng, nếu bạn có:

  • nhiều người gửi và nhiều người nhận
  • một tá giao thức (ftp, http, jms, v.v.)
  • nhiều quy tắc phức tạp
    • Gửi tin nhắn A đến máy thu A và B
    • Gửi tin nhắn B tới máy thu C dưới dạng XMLnhưng một phần dịch nó, làm giàu nó (thêm siêu dữ liệu) và NẾU điều kiện X, sau đó gửi cho người nhận D, nhưng dưới dạng CSV.

Vì vậy, bây giờ bạn cần:

  • dịch giữa các giao thức
  • keo dán thành phần với nhau
  • xác định các tuyến đường - những gì diễn ra
  • bộ lọc một số điều trong một số trường hợp

Camel cung cấp cho bạn (và nhiều hơn) ở trên hộp:

enter image description here

với ngôn ngữ DSL tuyệt vời để bạn xác định nội dung và cách thức:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

Xem thêm điều này và điều này và Camel in Action (như những người khác đã nói, một cuốn sách tuyệt vời!)


54
2018-04-28 17:53





Một trong những điều bạn cần hiểu, trước khi bạn cố gắng hiểu Apache Camel, là các mẫu tích hợp doanh nghiệp. Không phải tất cả mọi người trong lĩnh vực này đều thực sự nhận thức được họ. Trong khi bạn chắc chắn có thể đọc cuốn sách Mẫu tích hợp doanh nghiệp, một cách nhanh hơn để bắt kịp tốc độ trên chúng là đọc một thứ gì đó giống như bài viết trên Wikipedia Tích hợp ứng dụng doanh nghiệp.

Một trong những bạn đã đọc và hiểu được lĩnh vực chủ đề, bạn sẽ có nhiều khả năng hiểu mục đích của Apache Camel

HTH


45
2018-01-13 03:36





DỰA TRÊN ANALOGY

Định tuyến dựa trên lạc đà có thể được hiểu dễ dàng bằng cách đặt mình vào vị trí của chủ sở hữu Hãng hàng không (ví dụ: American Airlines, Jet Airways).

Mục đích của 'hãng hàng không' của bạn là 'mang' hành khách 'từ một' thành phố 'sang một thành phố khác trên thế giới. Bạn sử dụng máy bay từ các công ty máy bay khác nhau như Boeing, Airbus, HAL để chở hành khách.

Hãng hàng không của bạn sử dụng 'sân bay' của thành phố và gỡ bỏ chúng bằng cách sử dụng sân bay của thành phố. Một hành khách có thể 'đi du lịch' đến nhiều thành phố, nhưng ở khắp mọi nơi họ phải đi qua sân bay để di chuyển giữa máy bay của hãng hàng không và thành phố.

Lưu ý rằng một hành khách 'khởi hành' từ thành phố về cơ bản là 'đến' vào máy bay của các hãng hàng không của bạn. Và một passeger 'đến' vào thành phố, về cơ bản là khởi hành từ máy bay. Vì chúng ta đang ở trong giày của chủ hãng hàng không, thuật ngữ 'hành khách đến' và 'hành khách khởi hành' được đảo ngược từ các khái niệm thông thường của chúng ta dựa trên quan điểm của thành phố.

Cơ sở hạ tầng 'sân bay' tương tự của mỗi thành phố được sử dụng bởi hành khách 'khởi hành' và hành khách 'đến'. Một sân bay cung cấp 'cơ sở hạ tầng khởi hành' cho hành khách khởi hành, khác với 'cơ sở hạ tầng đến' được cung cấp cho hành khách đến.

Hành khách có thể tiếp tục thực hiện các hoạt động của họ trong ngày của họ do nhiều 'tiện nghi' khác nhau cung cấp bên trong máy bay của các hãng hàng không của bạn, trong khi đi du lịch.

Trên hết, hãng hàng không của bạn cũng cung cấp các tiện nghi phòng chờ cho các phương pháp điều trị đặc biệt như 'hiểu ngôn ngữ địa phương' và chuẩn bị cho bạn 'du lịch'.

Cho phép thay thế vài từ / cụm từ được sử dụng ở trên bằng cách sau:

hãng hàng không của bạn: Apache Camel

các công ty máy bay:

máy bay của hãng hàng không của bạn: cơ chế vận chuyển cơ bản của Apache Camel

carry: route

hành khách: tin nhắn;

thành phố: system;

sân bay: Camel Component;

hiểu ngôn ngữ địa phương: Nhập Chuyển đổi;

khởi hành: sản xuất, sản xuất

đến: tiêu thụ, tiêu thụ

du lịch: được định tuyến

tiện nghi: được cung cấp

Sau khi thay thế các từ, đây là những gì bạn nhận được:

Mục đích của 'Apache Camel' là định tuyến 'thông điệp' từ một 'hệ thống' sang một 'hệ thống khác' trên thế giới. Lạc đà Apache sử dụng các cơ chế truyền tải khác nhau để định tuyến thư.

Apache Camel chọn các thông báo bằng cách sử dụng 'Camel based Component' của hệ thống 'from' và loại bỏ chúng bằng cách sử dụng 'Camel based Component' của hệ thống 'to'. Một thông báo có thể định tuyến tới nhiều hệ thống, nhưng ở khắp mọi nơi họ phải đi qua 'Linh kiện dựa trên Lạc đà' để di chuyển giữa 'cơ chế vận chuyển cơ bản của Apache Camel' và hệ thống.

Lưu ý rằng một thông báo 'được sản xuất' từ hệ thống về cơ bản là 'được tiêu thụ' vào cơ chế truyền tải cơ bản của Apache Camel '. Và một thông điệp được tiêu thụ bởi một hệ thống, về cơ bản được tạo ra bởi cơ chế vận chuyển cơ bản của Apache Camel.

Vì chúng tôi đang cố gắng hiểu Camel, chúng ta phải suy nghĩ từ quan điểm của Camel ở đây trở đi. Do đó, ý nghĩa của thông điệp người tiêu dùng của các thuật ngữ và 'thông điệp của nhà sản xuất' được đảo ngược từ các khái niệm thông thường của chúng ta dựa trên quan điểm của hệ thống.

Cơ sở hạ tầng mã hóa 'Camel based Component' tương tự được sử dụng bởi 'thông điệp của nhà sản xuất' và 'thông điệp người tiêu dùng'. 'Thành phần dựa trên Lạc đà' cung cấp 'điểm cuối của nhà sản xuất' cho 'thông điệp của nhà sản xuất' và 'điểm cuối người tiêu dùng' cho 'thông điệp khách hàng'.

Tin nhắn có thể được xử lý bởi Camel khi chúng đang được định tuyến.

Trên đầu trang của định tuyến này, Camel cung cấp các tính năng đặc biệt như 'Loại chuyển đổi' và nhiều tính năng khác ...


42
2018-04-13 12:54



Tương tự khá tốt trên Camel - pramodc84
Lời giải thích tuyệt vời - javalearner_heaven


Nếu bạn biết về các mẫu tích hợp doanh nghiệp, Apache Camel là một khung tích hợp thực hiện tất cả các EIP.

Và bạn có thể triển khai Camel dưới dạng ứng dụng độc lập trong vùng chứa web.

Về cơ bản, nếu bạn phải tích hợp một số ứng dụng với các giao thức và công nghệ khác nhau, bạn có thể sử dụng Camel.


34
2018-01-13 02:59