- MuleSoft 教程
- MuleSoft - 首頁
- MuleSoft - Mule ESB 簡介
- MuleSoft - Mule 專案
- MuleSoft - Mule 在我們的機器中
- MuleSoft - Anypoint Studio
- MuleSoft - 探索 Anypoint Studio
- 建立第一個 Mule 應用程式
- MuleSoft - DataWeave 語言
- 訊息處理器和指令碼元件
- 核心元件及其配置
- MuleSoft - 端點
- 流程控制和轉換器
- 使用 Anypoint Studio 的 Web 服務
- MuleSoft - Mule 錯誤處理
- MuleSoft - Mule 異常處理
- MuleSoft - 使用 MUnit 進行測試
- MuleSoft 有用資源
- MuleSoft - 快速指南
- MuleSoft - 有用資源
- MuleSoft - 討論
MuleSoft - 端點
端點基本上包括那些在 Mule 應用程式工作流程中觸發或啟動處理的元件。它們在 Anypoint Studio 中被稱為源,在 Mule 的設計中心被稱為觸發器。Mule 4 中一個重要的端點是排程程式元件。
排程程式端點
此元件基於時間條件工作,這意味著它使我們能夠在滿足基於時間的條件時觸發流程。例如,排程程式可以觸發一個事件,以每隔 10 秒啟動一個 Mule 工作流程。我們還可以使用靈活的 Cron 表示式來觸發排程程式端點。
關於排程程式的重要說明
使用排程程式事件時,需要注意以下幾點:
排程程式端點遵循 Mule 執行時所在的機器的時區。
例如,如果 Mule 應用程式在 CloudHub 上執行,則排程程式將遵循 CloudHub 工作程式所在區域的時區。
在任何給定時間,只有一個由排程程式端點觸發的流程可以處於活動狀態。
在 Mule 執行時叢集中,排程程式端點僅在主節點上執行或觸發。
配置排程程式的方法
如上所述,我們可以將排程程式端點配置為以固定的時間間隔觸發,也可以提供 Cron 表示式。
配置排程程式的引數(對於固定時間間隔)
以下是將排程程式設定為定期觸發流程的引數:
頻率 - 它基本上描述了排程程式端點將觸發 Mule 流程的頻率。此時間的單位可以從“時間單位”欄位中選擇。如果您沒有為此提供任何值,它將使用預設值 1000。另一方面,如果您提供 0 或負值,它也將使用預設值。
啟動延遲 - 這是應用程式啟動後,我們必須等待多長時間才能第一次觸發 Mule 流程。啟動延遲的值以與頻率相同的時間單位表示。其預設值為 0。
時間單位 - 它描述了頻率和啟動延遲的時間單位。時間單位的可能值是毫秒、秒、分鐘、小時、天。預設值為毫秒。
配置排程程式的引數(對於 Cron 表示式)
實際上,Cron 是用於描述時間和日期資訊的標準。如果您使用靈活的 Cron 表示式來使排程程式觸發,則排程程式端點會跟蹤每一秒,並在 Quartz Cron 表示式與時間日期設定匹配時建立 Mule 事件。使用 Cron 表示式,事件可以只觸發一次或定期觸發。
下表給出了六個必需設定的日期時間表達式:
| 屬性 | 值 |
|---|---|
| 秒 | 0-59 |
| 分鐘 | 0-59 |
| 小時 | 0-23 |
| 月份中的日期 | 1-31 |
| 月份 | 1-12 或 JAN-DEC |
| 星期幾 | 1-7 或 SUN-SAT |
排程程式端點支援的一些 Quartz Cron 表示式示例如下:
½ * * * * ? - 表示排程程式每天每 2 秒執行一次。
0 0/5 16 ** ? - 表示排程程式從下午 4 點開始,每 5 分鐘執行一次,到下午 4:55 結束,每天如此。
1 1 1 1, 5 * ? - 表示排程程式每年的一月一日和四月一日執行一次。
示例
以下程式碼每秒記錄一次訊息“hi”:
<flow name = "cronFlow" doc:id = "ae257a5d-6b4f-4006-80c8-e7c76d2f67a0">
<doc:name = "Scheduler" doc:id = "e7b6scheduler8ccb-c6d8-4567-87af-aa7904a50359">
<scheduling-strategy>
<cron expression = "* * * * * ?" timeZone = "America/Los_Angeles"/>
</scheduling-strategy>
</scheduler>
<logger level = "INFO" doc:name = "Logger"
doc:id = "e2626dbb-54a9-4791-8ffa-b7c9a23e88a1" message = '"hi"'/>
</flow>