2012-02-06 16 views
8

Là người mới đối với Apache Camel, gần đây tôi đã xem xét danh sách các thành phần dài và tình cờ gặp sự hỗ trợ của họ đối với các thành phần SEDA queue.Hàng đợi thông thường so với hàng đợi SEDA

Trang không có ý nghĩa đối với tôi, vì vậy tôi đã thực hiện một vài tìm kiếm trực tuyến cho cụm từ "hàng đợi SEDA" và nhận bài viết wikipedia here.

Sau khi đọc bài viết đó, tôi không thể biết sự khác biệt giữa hàng đợi SEDA và hàng đợi bình thường, "bình thường"! Cả hai đều nắm lấy khái niệm về các hệ thống tách thông qua việc sử dụng các hàng đợi không đồng bộ.

Từ bài viết, "SEDA" nghe có vẻ giống như một kiến ​​trúc bao gồm việc đặt hàng đợi giữa mỗi thành phần. Điều này có đúng không?

Nhưng nếu nó chỉ là một kiến ​​trúc, thì tại sao hàng "SEDA" lại là một thành phần đặc biệt của Apache Camel?

+3

SEDA ngụ ý một chuỗi được gắn vào hàng đợi như ExecutorService (hàng đợi và nhóm luồng) Có lẽ đó là ý nghĩa của nó ở đây. –

+0

Tôi không biết liệu tài liệu đã được cập nhật hay chưa, nhưng về cơ bản nó nói rằng trong dòng đầu tiên: "Thành phần seda: cung cấp hành vi SEDA không đồng bộ, để các thư được trao đổi trên một BlockingQueue và người dùng được gọi _in một thread_ riêng biệt từ nhà sản xuất. " – DavidS

Trả lời

4

Hàng đợi SEDA giống như một hàng đợi thông thường (và như Peter đã nói ở trên, trong Camel họ có một hồ bơi liên kết với chúng như một phần của thành phần). SEDA là một kiến ​​trúc. Thành phần SEDA trong Camel sử dụng các hàng đợi trong bộ nhớ trong quá trình của bạn và là một thành phần riêng biệt để phân biệt chúng với thành phần hàng đợi khác trong lạc đà Apache, cụ thể là thành phần JMS.

1

SEDA cung cấp tách các thành phần trong một tuyến đường lạc đà. Hoặc cho rằng vấn đề trong một quá trình duy nhất. . Có nghĩa là nó giúp bạn thực hiện các cuộc gọi không đồng bộ đến các thành phần khác ... nó là một chặn trong bộ nhớ. Mặt khác, JMS được sử dụng để tách toàn bộ hệ thống .. JMS sẽ có một nhà môi giới bên ngoài tham gia .. SEDA willl chỉ tạo một chuỗi riêng biệt từ thành phần người tiêu dùng

3

SEDA là từ viết tắt của Đã tổ chức sự kiện Kiến trúc điều khiển nó được thiết kế như một cơ chế để điều chỉnh dòng chảy giữa các giai đoạn xử lý tin nhắn khác nhau. Ý tưởng là để làm trơn tru các frecuency của sản lượng tin nhắn từ một quá trình tổng thể để nó phù hợp với đầu vào, Nó cho phép một chủ đề tiêu dùng của enpoint để giảm tải công việc của hoạt động lâu dài vào bakground, do đó giải phóng chúng lên để tiêu thụ tin nhắn từ giao thông. Khi trao đổi được chuyển đến một seda: điểm cuối, nó được đặt vào một BlockingQueue. Danh sách tồn tại trong ngữ cảnh lạc đà, có nghĩa là chỉ những tuyến đường nằm trong cùng một ngữ cảnh mới có thể được nối với loại điểm cuối này. Hàng đợi không bị chặn theo mặc định, mặc dù có thể thay đổi bằng cách đặt thuộc tính kích thước trên URI của người tiêu dùng.

Theo mặc định, một chuỗi được gán cho điểm cuối đọc trao đổi khỏi danh sách và xử lý chúng thông qua tuyến đường. Như đã thấy trong ví dụ về quy trình, có thể tăng số lượng concurrenctConsumers để đảm bảo rằng các trao đổi đang được xử lý từ danh sách đó một cách kịp thời.

Mẫu SEDA phù hợp nhất để xử lý các thông báo InOnly, trong đó một tuyến kết thúc quá trình xử lý và chuyển sang chế độ khác để xử lý pha tiếp theo. có thể yêu cầu phản hồi từ seda: điểm cuối bằng cách gọi nó khi mẫu trao đổi tin nhắn là InOut

Tham chiếu. Sách hướng dẫn của nhà phát triển Apache Camel