MuleSoft - Điều khiển dòng chảy và Máy biến áp
Kiểm soát luồng (Bộ định tuyến)
Nhiệm vụ chính của thành phần Điều khiển luồng là nhận sự kiện Mule đầu vào và định tuyến nó đến một hoặc nhiều chuỗi thành phần riêng biệt. Về cơ bản, nó định tuyến sự kiện Mule đầu vào tới (các) chuỗi thành phần khác. Do đó, nó còn được gọi là Bộ định tuyến. Bộ định tuyến Choice và Scatter-Gather là những bộ định tuyến được sử dụng nhiều nhất trong thành phần Điều khiển luồng.
Bộ định tuyến lựa chọn
Như tên cho thấy, bộ định tuyến này áp dụng logic DataWeave để chọn một trong hai hoặc nhiều tuyến đường. Như đã thảo luận trước đó, mỗi tuyến đường là một chuỗi các bộ xử lý sự kiện Mule riêng biệt. Chúng ta có thể định nghĩa các bộ định tuyến lựa chọn là bộ định tuyến tự động định tuyến thông điệp qua một luồng theo một tập hợp các biểu thức DataWeave được sử dụng để đánh giá nội dung thông báo.
Sơ đồ giản đồ của Bộ định tuyến lựa chọn
Hiệu quả của việc sử dụng bộ định tuyến Choice cũng giống như việc thêm xử lý có điều kiện vào luồng hoặc if/then/elsekhối mã trong hầu hết các ngôn ngữ lập trình. Sau đây là sơ đồ của Bộ định tuyến lựa chọn, có ba tùy chọn. Trong số đó, một là bộ định tuyến mặc định.
Bộ định tuyến Scatter-Gather
Một bộ xử lý sự kiện định tuyến khác được sử dụng nhiều nhất là Scatter-Gather component. Như tên gọi của nó, nó hoạt động dựa trên các nguyên tắc cơ bản của phân tán (sao chép) và tập hợp (hợp nhất). Chúng ta có thể hiểu hoạt động của nó với sự trợ giúp của hai điểm sau:
Đầu tiên, bộ định tuyến này sao chép (Phân tán) một sự kiện Mule sang hai hoặc nhiều tuyến song song. Điều kiện là mỗi tuyến phải là một chuỗi của một hoặc nhiều bộ xử lý sự kiện giống như một luồng con. Mỗi tuyến đường trong trường hợp này sẽ tạo ra một sự kiện Mule bằng cách sử dụng một chuỗi riêng biệt. Mỗi sự kiện Mule sẽ có tải trọng, thuộc tính cũng như biến số riêng.
Tiếp theo, bộ định tuyến này tập hợp các sự kiện Mule đã tạo từ mỗi tuyến và sau đó hợp nhất chúng lại với nhau thành một sự kiện Mule mới. Sau đó, nó chuyển sự kiện Mule hợp nhất này sang bộ xử lý sự kiện tiếp theo. Ở đây, điều kiện là bộ định tuyến SG sẽ chuyển một sự kiện Mule hợp nhất đến bộ xử lý sự kiện tiếp theo chỉ khi mọi tuyến được hoàn thành thành công.
Sơ đồ giản đồ của bộ định tuyến phân tán-thu thập
Sau đây là sơ đồ của một Bộ định tuyến Scatter-Gather có bốn bộ xử lý sự kiện. Nó thực hiện mọi tuyến đường song song và không tuần tự.
Xử lý lỗi bằng Bộ định tuyến Scatter-Gather
Đầu tiên, chúng ta phải có kiến thức về loại lỗi có thể được tạo ra trong thành phần Scatter-Gather. Bất kỳ lỗi nào có thể được tạo ra trong các bộ xử lý sự kiện dẫn đến thành phần Scatter-Gather tạo ra lỗi loạiMule: COMPOSITE_ERROR. Lỗi này sẽ được ném bởi thành phần SG chỉ sau khi mọi tuyến đường thất bại hoặc hoàn thành.
Để xử lý loại lỗi này, try scopecó thể được sử dụng trong mỗi tuyến của thành phần Scatter-Gather. Nếu lỗi được xử lý thành công bằngtry scope, thì chắc chắn tuyến đường sẽ có thể tạo ra một sự kiện Mule.
Máy biến áp
Giả sử nếu chúng ta muốn thiết lập hoặc loại bỏ một phần của bất kỳ sự kiện Mule nào, thì thành phần Transformer là lựa chọn tốt nhất. Các thành phần máy biến áp có các loại sau:
Loại bỏ biến áp
Như tên của nó, thành phần này nhận một tên biến và loại bỏ biến đó khỏi sự kiện Mule.
Cấu hình loại bỏ biến áp
Bảng dưới đây cho thấy tên của các trường và mô tả của chúng sẽ được xem xét khi định cấu hình loại bỏ máy biến áp -
Sr.No | Trường & Giải thích |
---|---|
1 | Display Name (doc:name) Chúng tôi có thể tùy chỉnh điều này để hiển thị tên duy nhất cho thành phần này trong luồng làm việc Mule của chúng tôi. |
2 | Name (variableName) Nó đại diện cho tên của biến cần loại bỏ. |
Đặt máy biến áp tải trọng
Với sự giúp đỡ của set-payload, chúng ta có thể cập nhật tải trọng, có thể là một chuỗi ký tự hoặc biểu thức DataWeave, của thông báo. Không nên sử dụng thành phần này cho các biểu thức hoặc phép biến đổi phức tạp. Nó có thể được sử dụng cho những người đơn giản nhưselections.
Bảng dưới đây cho thấy tên của các trường và mô tả của chúng sẽ được xem xét khi định cấu hình máy biến áp tải trọng đặt -
Cánh đồng | Sử dụng | Giải trình |
---|---|---|
Giá trị (value) | Bắt buộc | Giá trị được nộp là bắt buộc để đặt trọng tải. Nó sẽ chấp nhận một chuỗi ký tự hoặc biểu thức DataWeave xác định cách đặt trọng tải. Các ví dụ giống như "một số chuỗi" |
Loại Mime (mimeType) | Không bắt buộc | Nó là tùy chọn nhưng đại diện cho loại kịch câm của giá trị được gán cho trọng tải của thông báo. Các ví dụ giống như văn bản / đơn giản. |
Encoding (mã hóa) | Không bắt buộc | Nó cũng là tùy chọn nhưng đại diện cho mã hóa của giá trị được gán cho trọng tải thông báo. Các ví dụ giống như UTF-8. |
Chúng tôi có thể đặt một trọng tải thông qua mã cấu hình XML -
With Static Content - Mã cấu hình XML sau sẽ đặt tải trọng bằng cách sử dụng nội dung tĩnh -
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
mimeType = "application/json" encoding = "UTF-8"/>
With Expression Content - Mã cấu hình XML sau sẽ đặt tải trọng bằng cách sử dụng nội dung Biểu thức -
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
Ví dụ trên sẽ thêm ngày hôm nay với tải trọng tin nhắn “Xin chào”.
Đặt biến áp biến
Với sự giúp đỡ của set variable, chúng ta có thể tạo hoặc cập nhật một biến để lưu trữ các giá trị có thể là các giá trị theo nghĩa đen đơn giản như chuỗi, trọng tải thông báo hoặc đối tượng thuộc tính, để sử dụng trong luồng ứng dụng Mule. Không nên sử dụng thành phần này cho các biểu thức hoặc phép biến đổi phức tạp. Nó có thể được sử dụng cho những người đơn giản nhưselections.
Cấu hình bộ biến áp biến áp
Bảng dưới đây cho thấy tên của các trường và mô tả của chúng sẽ được xem xét khi định cấu hình máy biến áp tải trọng đặt -
Cánh đồng | Sử dụng | Giải trình |
---|---|---|
Tên biến (tên biến) | Bắt buộc | Nó là bắt buộc và nó đại diện cho tên của biến. Trong khi đặt tên, hãy tuân theo quy ước đặt tên như nó phải chứa số, ký tự và dấu gạch dưới. |
Giá trị (value) | Bắt buộc | Giá trị được gửi là bắt buộc để thiết lập một biến. Nó sẽ chấp nhận một chuỗi ký tự hoặc biểu thức DataWeave. |
Loại Mime (mimeType) | Không bắt buộc | Nó là tùy chọn nhưng đại diện cho kiểu kịch câm của biến. Các ví dụ giống như văn bản / đơn giản. |
Encoding (mã hóa) | Không bắt buộc | Nó cũng là tùy chọn nhưng đại diện cho mã hóa của biến. Các ví dụ như ISO 10646 / Unicode (UTF-8). |
Thí dụ
Ví dụ dưới đây sẽ đặt biến thành tải trọng thông báo -
Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio
Tương tự, ví dụ dưới đây sẽ đặt biến thành tải trọng thông báo -
Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.