使用自動轉寄鏈結服務匯流排實體
服務匯流排自動轉寄功能可讓您將佇列或訂用帳戶鏈結至另一個屬於相同命名空間的佇列或主題。 啟用自動轉寄後,服務匯流排會自動移除放在第一個佇列或訂用帳戶 (來源) 中的訊息,然後將它們放入第二個佇列或主題 (目的地) 中。 仍有可能將訊息直接傳送至目的地實體。
注意
服務匯流排的基本層不支援自動轉寄功能。 如需這些階層間的差異,請參閱服務匯流排定價。
建立來源實體的時候,目的地實體必須存在。 如果目的地實體不存在,則系統要求建立來源實體時,服務匯流排會傳回例外狀況。
案例
擴增個別主題
您可以使用自動轉寄來擴增個別主題。 服務匯流排會將特定主題的訂用帳戶數目限制為 2,000。 您可以藉由建立第二層主題來容納更多訂用帳戶。 即使您不受服務匯流排訂閱數目限制約束,新增第二層主題仍可改善主題的整體輸送量。
將訊息傳送者與接收者分離
您也可以使用自動轉寄來分離訊息傳送端和接收端。 例如,請考慮由三個模組組成的企業資源規劃 (ERP) 系統:訂單處理、庫存管理和客戶關係管理。 上述每一個模組會產生加入對應主題中的訊息。 Alice 和 Bob 都是銷售代表,他們對其客戶相關的所有訊息很感興趣。 為了接收這些訊息,Alice 和 Bob 各自在每個會將所有訊息自動轉寄至其佇列的 ERP 主題上建立個人佇列和訂用帳戶。
如果 Alice 去渡假,她的個人佇列 (而不是 ERP 主題) 會填滿。 在此案例中,因為銷售代表未收到任何訊息,所以沒有 ERP 主題達到配額。
注意
設定自動轉寄後,來源實體上的 AutoDeleteOnIdle
值會自動設定為該資料類型的最大值。
- 在來源端,自動轉送會作為接收作業,因此啟用自動轉送的來源一律不會「閒置」,且不會自動刪除。
- 自動轉送不會對目的地實體進行任何變更。 如果在目的地實體上啟用
AutoDeleteOnIdle
,則會自動刪除實體 (在指定閒置間隔時處於非使用中狀態的情況下)。 建議您不要在目的地實體上啟用AutoDeleteOnIdle
,因為刪除目的地實體後,來源實體會在嘗試將訊息轉送至該目的地時持續看到例外狀況。
自動轉寄考量
- 服務匯流排 不允許在已啟用自動轉送的來源實體上建立訊息接收者。
- 如果目的地實體累積過多訊息並超過配額,或目的地實體已停用,則來源實體會新增訊息至無效信件佇列,直到目的地有空間 (或重新啟用實體) 為止。 這些訊息將會繼續存留在寄不出的信件佇列中,所以您必須從寄不出的信件佇列明確地接收並處理它們。
- 為取得包含多個訂閱的複合主題,而鏈結個別主題時,建議第一層主題上包含適量的訂閱,第二層主題上包含多個訂閱。 例如,有 20 個訂用帳戶的第一層主題 (其中的每個訂用帳戶會鏈結至有 200 個訂用帳戶的第二層主題) 可達到比有 200 個訂用帳戶的第一層主題 (其中的每個訂用帳戶會鏈結至有 20 個訂用帳戶的第二層主題) 更高的輸送量。
- 服務匯流排會針對每一則轉寄的訊息向一個作業計費。 例如,如果所有第一層訂用帳戶都收到訊息的複本,將訊息傳送至有 20 個訂用帳戶的主題 (其中的每個訂用帳戶都會設定成將訊息自動轉寄至另一個佇列或主題) 會以 21 個作業計費。
- 若要建立鏈結至另一個佇列或主題的訂用帳戶,訂用帳戶的建立者必須同時擁有來源和目的地實體的管理權限。 將訊息傳送至來源主題只需要來源主題的傳送權限。
- 請不要建立超過四個躍點的鏈結。 超過四個躍點的訊息會成為無效訊息。 當訊息從一個佇列或主題自動轉送到另一個佇列或主題時,訊息的躍點計數就會遞增。 透過透過傳送佇列傳送訊息的案例,也可以遞增訊息的躍點計數。
- 啟用工作階段的佇列或訂用帳戶不支援自動轉寄。
- 來源佇列會嘗試以接收的相同順序將訊息轉寄至目的地實體,但目的地可能是不支援排序的主題。 如果來源或目的地實體是分割實體,則不保證順序。
下一步
若要瞭解如何以不同方式 (Azure 入口網站、PowerShell、CLI、Azure Resource Management 範本等) 啟用或停用自動轉寄,請參閱啟用佇列和訂用帳戶的自動轉送。