共用方式為


選擇啟動策略

本主題描述 Service Broker 啟動的選項。

Service Broker 支援非同步、佇列的訊息。因為交談可能會持續好幾天、好幾個月或好幾年,許多應用程式會使用啟動來動態擴充。本章節描述使用 Service Broker 來啟動應用程式的一些常見策略。

啟動策略

啟動應用程式的策略可以歸類為四大類別:

  • 內部啟動

  • 事件架構的啟動

  • 排程的工作

  • 啟動工作

每項啟動策略都有不同的優點。應用程式可以結合這些策略。例如,大部分的情況下,應用程式可以使用含有少量佇列讀取器的內部啟動。但是,在一天當中有某些時間,它可以啟動較多的佇列讀取器。

內部啟動

透過 Service Broker 內部啟動,Service Broker 佇列監視器會在必要時,直接啟動預存程序。這通常是最直接的方法。透過使用預存程序的直接啟動,您不必在應用程式中撰寫額外的程式碼來管理啟動。不過,內部啟動需要應用程式以 SQL Server 預存程序的方式撰寫應用程式。當使用內部啟動時,您可以將應用程式撰寫成當沒有訊息要處理時結束。

事件架構的啟動

一些應用程式會執行以回應特定的事件。例如,當電腦上的 CPU 使用率落在某個層級之下時,就可以執行應用程式。或者,當建立新表格時,您可以執行記錄應用程式。

Service Broker 外部啟動是事件架構啟動特殊的案例。對於外部啟動而言,應用程式會啟動以回應 QUEUE_ACTIVATION 事件。

對於由事件通知觸發的事件,事件架構啟動可以和 Service Broker 內部啟動結合。在此情況下,您可以在接收事件通知的佇列上使用內部啟動。啟動預存程序會接收通知訊息並啟動應用程式。

對於其他事件,您可以使用 SQL Server Agent 在執行 SQL Server 相同的電腦上啟動作業。您可以撰寫應用程式,從遠端電腦監視 Windows Management Instrumentation (WMI) 事件。應用程式可以在執行 SQL Server 的電腦上發生 WMI 事件時,啟動工作。

當使用事件架構的啟動時,應用程式通常會在沒有任何訊息要處理時結束。

排程的工作

透過排程的工作,應用程式會按設定排程啟動。這項策略對於批次處理應用程式很方便。以排程的工作執行的應用程式可以在沒有任何訊息要處理時結束,或是可以在某個時間結束。

例如,處理給供應商之訂單的應用程式可以在白天儲存訊息,然後在夜間處理訊息,以產生給供應商的單一訂單。在此情況下,應用程式可以使用 SQL Server Agent 工作,在每晚於特定時間啟動應用程式。

啟動工作

某些應用程式會啟動一次,通常是在電腦啟動或是 SQL Server 啟動時。這些工作的範例諸如在 SQL Server 中的啟動預存程序、在 Windows 啟動群組中的應用程式,或是 Windows 服務。在此情況下,應用程式仍然會繼續執行,然後在訊息到達時處理訊息。持續執行的應用程式在訊息到達佇列時,並不需要啟動時間。不過,因為應用程式不會在沒有訊息時結束,所以即使程式沒有工作要執行,也會耗用資源。

這項策略對於處理持續不斷的訊息資料流以及在啟動期間需要大量資源的應用程式特別有用。