2016-12-22 26 views
5

Ai đó có thể giải thích cách chiến lược xử lý Mule hoạt động khi một luồng đang gọi một chiến dịch khác với luồng-ref?Chiến lược xử lý dòng chảy và xử lý

Trường hợp 1.
Hãy nói rằng chúng tôi có 2 dòng: flowA và flowB, với các chiến lược xử lý procA và procB, cả hai đều không đồng bộ nhưng procA có 10 chủ đề cho phép trong khi procB chỉ có 1.

<queued-asynchronous-processing-strategy name="procA" maxThreads="10" doc:name="procA"/> 
<queued-asynchronous-processing-strategy name="procB" maxThreads="1" doc:name="procB"/> 

flowA được đọc từ một hàng đợi và gọi flowB với

<flow-ref name="flowB" doc:name="flowB"/> 

sẽ là một hàng đợi tạo ra trong trường hợp này giữa flowA và flowB để tất cả các flowB gọi exe cắt từng sợi một?
Hoặc luồngB sẽ tuân theo chiến lược flowA với 10 tin nhắn được xử lý cùng một lúc?

Trường hợp 2.

flowA là một dòng chảy đồng bộ đọc từ một hàng đợi. Nó đang gọi một flowB không đồng bộ với 1 chủ đề tối đa được phép như thế này:

<queued-asynchronous-processing-strategy name="procB" maxThreads="1" doc:name="procB"/> 

Khối async có nó chiến lược riêng procC với 10 chủ đề cho phép:

<queued-asynchronous-processing-strategy name="procC" maxThreads="10" doc:name="procC"/> 

flowA đang kêu gọi flowB như thế này:

<async doc:name="Async" processingStrategy="procC"> 
<flow-ref name="flowB" doc:name="flowB"/> 
</async> 

Câu hỏi tương tự:
Sẽ có hàng đợi khác được tạo trong trường hợp này giữa async b khóa và lưu lượngB để tất cả các luồng lệnh B được thực thi trong một chuỗi một?
Hoặc luồngB sẽ theo chiến lược procC với 10 thông báo được xử lý cùng một lúc?

Trả lời

3

Trường hợp 1.

Một hàng đợi với 1 chủ đề sẽ được tạo ra cho dòng chảy B.

VM nhận hồ bơi thread-> SEDA chủ đề từ procA -> SEDA chủ đề từ procB

Trường hợp 2.

Như trên, một hàng đợi khác có 1 chuỗi sẽ được tạo cho luồng B

Chủ đề hồ sơ máy thu VM -> SEDA chủ đề từ procC -> Chuỗi SEDA từ procB

Chiến lược xử lý luồng được bao phủ trong Mule documentation nhưng tôi không thấy rằng quá hữu ích. Nó là đơn giản để thiết lập các dòng chảy trong Anypoint Studio và sử dụng Loggers để xác định thread đang chạy tại một thời điểm cụ thể.

Các vấn đề liên quan