メッセージ エンティティの一時停止と再アクティブ化 (無効化)

キュー、トピック、およびサブスクリプションは、一時停止することができます。 一時停止されたエンティティは無効な状態になり、すべてのメッセージがストレージに保持されます。 ただし、メッセージを削除または追加することはできず、各プロトコル操作はエラーになります。

緊急の管理上の理由で、エンティティを中断することをお勧めします。 たとえば、キューからメッセージを取る受信プログラムに欠陥があり、処理に失敗したにもかかわらず正しくない状態でメッセージが完了するため、それらが削除されるとします。 この場合は、コードを修正してデプロイするまで、受信用のキューを無効にすることをお勧めします。

一時停止または再アクティブ化はユーザーまたはシステムのいずれかが実行できます。 サブスクリプションの使用制限を越えるなど重大な管理上の理由がある場合のみ、システムによってエンティティが一時停止されます。 システムによって無効化されたエンティティは、ユーザーによって再アクティブ化することはできませんが、一時停止の原因が解消されれば復元されます。

キューの状態

キューに設定可能な状態は次のとおりです。

  • Active: キューはアクティブです。 キューとの間でメッセージを送信したり、メッセージを受信したりすることができます。
  • Disabled: キューは一時停止状態です。 これは、SendDisabledReceiveDisabled の両方を設定することと同じです。
  • SendDisabled: キューとの間で、メッセージを送信することはできませんが、メッセージを受信することはできます。 キューにメッセージを送信しようとすると、例外が発生します。
  • ReceiveDisabled: キューとの間で、メッセージを送信することはできますが、メッセージを受信することはできません。 キューからメッセージを受信しようとすると、例外が発生します。

Azure portal でキューの状態を変更します。

  1. Azure portal で、使用する Service Bus 名前空間に移動します。

  2. 状態を変更するキューを選択します。 下部のペインの中央にキューが表示されます。

  3. [Service Bus キュー] ページに、キューの現在の状態がハイパーリンクとして表示されます。 左側のメニューで [概要] を選択していない場合は、それを選択してキューの状態を表示します。 キューの現在の状態を変更するには、それを選択します。

    Select state of the queue

  4. キューの新しい状態を選択して、 [OK] を選択します。

    Set state of the queue

また、Azure CLI または Azure PowerShell から Azure Resource Manager テンプレートを使用することで、送信および受信の操作を無効化することもできます。

Azure PowerShell を使用してキューの状態を変更する

キューを無効にする PowerShell コマンドの例を次に示します。 再アクティブ化コマンドは同様ですが、StatusActive に設定されます。

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

$q.Status = "Disabled"

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

トピックの状態

トピックの状態は、Azure portal で変更できます。 トピックの現在の状態を選択すると、次のページが表示され、状態を変更できるようになります。

Change topic status

トピックに設定できる状態は次のとおりです。

  • [アクティブ] : トピックはアクティブです。 トピックにメッセージを送信することができます。
  • Disabled: トピックは中断されています。 トピックにメッセージを送信することはできません。 トピックに対して [Disabled] を設定することは、[SendDisabled] を設定するのと同じ効果があります。
  • SendDisabled: Disabled と同じ効果があります。 トピックにメッセージを送信することはできません。 トピックにメッセージを送信しようとすると、例外が発生します。

サブスクリプションの状態

サブスクリプションの状態は、Azure portal で変更できます。 サブスクリプションの現在の状態を選択すると、次のページが表示され、状態を変更できるようになります。

Change subscription status

サブスクリプションに設定できる状態は次のとおりです。

  • [アクティブ] : サブスクリプションがアクティブである。 サブスクリプションからメッセージを受信できます。
  • Disabled: サブスクリプションが中断されました。 サブスクリプションからメッセージを受信することはできません。 サブスクリプションに対して [Disabled] を設定することは、[ReceiveDisabled] を設定するのと同じ効果があります。 サブスクリプションからメッセージを受信しようとすると、例外が発生します。
  • ReceiveDisabled: Disabled と同じ効果があります。 サブスクリプションからメッセージを受信することはできません。 サブスクリプションからメッセージを受信しようとすると、例外が発生します。

ここでは、トピックとそのサブスクリプションで設定した状態に基づく動作を示します。

トピックの状態 サブスクリプションの状態 動作
アクティブ アクティブ トピックへのメッセージの送信、およびサブスクリプションからのメッセージの受信を行うことができます。
アクティブ 無効または受信は無効 トピックにメッセージを送信することはできますが、サブスクリプションからメッセージを受信することはできません。
無効または送信は無効 アクティブ トピックにメッセージを送信することはできませんが、サブスクリプションに既に存在するメッセージを受信することはできます。
無効または送信は無効 無効または受信は無効 トピックにメッセージを送信することはできません。サブスクリプションから受信することもできません。

その他の状態

EntityStatu 列挙型は、システムによってのみ設定可能な一連の遷移状態も定義します。

次のステップ

Service Bus メッセージングの詳細については、次のトピックをご覧ください。