暫止及重新啟動傳訊實體 (停用)

您可以暫時停止佇列、主題和訂用帳戶。 暫止會讓實體進入停用狀態,此時所有訊息都會保存在儲存體中。 不過,訊息無法移除或新增,而且個別的通訊協定作業都會產生錯誤。

您可能因為緊急系統管理原因而想要暫止實體。 舉例來說,您不慎部署了錯誤的接收者,將訊息從佇列中移除、無法處理,而且無法正確地完成訊息及移除訊息。 在此情況下,您可能想要停用接收訊息的佇列,直到您更正並部署程式碼為止。

暫止或重新啟動可以由使用者或系統執行。 系統只會因為重大的管理原因暫止實體,例如達到訂閱消費限制。 使用者無法重新啟動由系統停用的實體,不過當導致暫止的原因排除後實體將能恢復正常狀態。

佇列狀態

可以為佇列設定的狀態為:

  • Active:佇列作用中。 您可以將訊息傳送至佇列,並從佇列接收訊息。
  • Disabled:佇列已暫止。 這相當於同時設定 SendDisabledReceiveDisabled
  • SendDisabled:您無法將訊息傳送至佇列,但您可以從佇列接收訊息。 如果您嘗試將訊息傳送至佇列,將會收到例外狀況。
  • ReceiveDisabled:您能夠將訊息傳送至佇列,但無法從佇列接收訊息。 如果您嘗試從佇列接收訊息,將會收到例外狀況。

變更 Azure 入口網站中的佇列狀態:

  1. 瀏覽至 Azure 入口網站中您的服務匯流排命名空間。

  2. 選取要變更狀態的佇列。 您會在中間的底部窗格中看到佇列。

  3. 在 [服務匯流排佇列] 頁面上,將佇列的目前狀態視為超連結。 如果未在左側功能表上選取 [概觀],請選取它以查看佇列的狀態。 選取佇列的目前狀態以變更佇列。

    Select state of the queue

  4. 選取佇列的新狀態,然後選取 [確定]

    Set state of the queue

您也可以透過 Azure CLI 或 Azure PowerShell 使用 Azure Resource Manager 範本來停用傳送和接收作業。

使用 Azure PowerShell 來變更佇列狀態

以下範例展示停用佇列的 PowerShell 命令。 重新啟動命令與前述相同,它會將 Status 設定為 Active

$q = Get-AzServiceBusQueue -ResourceGroup mygrp -NamespaceName myns -QueueName myqueue

$q.Status = "Disabled"

Set-AzServiceBusQueue -ResourceGroup mygrp -NamespaceName myns -QueueName myqueue -QueueObj $q

主題狀態

您能在 Azure 入口網站中變更主題狀態。 選取主題的目前狀態,以查看可讓您變更狀態的下列頁面。

Change topic status

可以為主題設定的狀態為:

  • Active:主題正在作用中。 您能將訊息傳送到主題。
  • Disabled:主題已暫止。 您無法將訊息傳送到主題。 設定 Disabled 相當於針對主題設定 SendDisabled
  • SendDisabled:與 Disabled 有著相同的效果。 您無法將訊息傳送到主題。 如果您嘗試將訊息傳送至主題,將會收到例外狀況。

訂閱狀態

您可以在 Azure 入口網站中變更訂閱狀態。 選取訂閱的目前狀態,以查看可讓您變更狀態的下列頁面。

Change subscription status

可針對訂閱設定的狀態如下:

  • Active:訂閱正在作用中。 您能自訂閱接收訊息。
  • Disabled:訂閱已被暫止。 您無法自訂閱接收訊息。 在訂用帳戶上設定 Disabled 相當於設定 ReceiveDisabled。 如果您嘗試從訂用帳戶接收訊息,將會收到例外狀況。
  • ReceiveDisabled:與 Disabled 有著相同的效果。 您無法自訂閱接收訊息。 如果您嘗試從訂用帳戶接收訊息,將會收到例外狀況。

以下是行為根據您在主題及其訂用帳戶上所設定狀態的情形。

主題狀態 訂閱狀態 行為
使用中 使用中 您可以將訊息傳送至主題,並從訂閱接收訊息。
使用中 已停用或已停用接收 您可以將訊息傳送至主題,但無法從訂閱接收訊息
已停用或已停用傳送 使用中 您無法將訊息傳送至主題,但您可以接收已在訂閱中的訊息。
已停用或已停用傳送 已停用或已停用接收 您無法將訊息傳送至主題,而且也無法從訂用帳戶接收訊息。

其他狀態

EntityStatus 列舉另定義一組只能由系統設定的可轉換狀態。

下一步

若要深入了解服務匯流排傳訊,請參閱下列主題: