Azure Service Bus のキューとサブスクリプションの自動転送を有効にする

Service Bus の自動転送機能を使用すると、キューまたはサブスクリプションを同じ名前空間に属する別のキューまたはトピックにチェーンできます。 自動転送が有効な場合は、Service Bus は、一方のキューまたはサブスクリプション (転送元) にあるメッセージを自動的に削除し、もう一方のキューまたはトピック (転送先) に追加します。 転送先エンティティには、メッセージを直接送信することもできます。 詳細については、「自動転送を使用した Service Bus エンティティのチェーン」を参照してください。 この記事では、Service Bus のキューとサブスクリプションで自動転送を有効にするさまざまな方法について説明します。

重要

Service Bus の Basic レベルでは、自動転送機能がサポートされていません。 Standard レベルと Premium レベルでは、この機能がサポートされています。 これらのレベルの違いについては、「Service Bus の価格」を参照してください。

Azure Portal の使用

Azure portal でキューまたはトピックのサブスクリプションを作成する場合は、次の例に示すように [メッセージをキュー/トピックに転送する] を選択します。 次に、メッセージをキューまたはトピックのどちらに転送するかを指定します。 この例では、 [キュー] オプションが選択され、同じ名前空間のキューが選択されています。

自動転送を有効にしたキューを作成する

Enable auto forward at the time of the queue creation

自動転送を有効にしたトピックのサブスクリプションを作成する

Enable auto forward at the time of the subscription creation

既存のキューの自動転送設定を更新する

Service Bus キューの [概要] ページで、 [Forward messages to]\(メッセージの転送先\) 設定に現在の値を選択します。 次の例では、現在の値が [無効] になっています。 [メッセージをキュー/トピックに転送する] ウィンドウで、メッセージの転送先のキューまたはトピックを選択できます。

Enable auto forward for an existing queue

既存のサブスクリプションの自動転送設定を更新する

Service Bus サブスクリプションの [概要] ページで、 [Forward messages to]\(メッセージの転送先\) 設定に現在の値を選択します。 次の例では、現在の値が [無効] になっています。 [メッセージをキュー/トピックに転送する] ウィンドウで、メッセージの転送先のキューまたはトピックを選択できます。

Enable auto forward for an existing subscription

Azure CLI の使用

自動転送を有効にしたキューを作成するには、メッセージの転送先のキューまたはトピックの名前を --forward-to に設定して az servicebus queue create コマンドを使用します。

az servicebus queue create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --forward-to myqueue2

既存のキューの自動転送設定を更新するには、--forward-to をメッセージの転送先のキューまたはトピックの名前に設定して az servicebus queue update コマンドを使用します。

az servicebus queue update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --forward-to myqueue2

自動転送を有効にしてトピックのサブスクリプションを作成するには、--forward-to をメッセージの転送先のキューまたはトピックの名前に設定して az servicebus topic subscription create コマンドを使用します。

az servicebus topic subscription create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysubscription \
    --forward-to myqueue2

トピックへのサブスクリプションの自動転送設定を更新するには、--forward-to をメッセージの転送先のキューまたはトピックの名前に設定して az servicebus topic subscription update コマンドを使用します。

az servicebus topic subscription create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysubscription \
    --forward-to myqueue2

Azure PowerShell の使用

自動転送を有効にしたキューを作成するには、メッセージの転送先のキューまたはトピックの名前を -ForwardTo に設定して New-AzServiceBusQueue コマンドを使用します。

New-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -ForwardTo myqueue2

既存のキューの自動転送設定を更新するには、次の例に示すように、Set-AzServiceBusQueue コマンドを使用します。

$queue=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue 

$queue.ForwardTo='myqueue2'

Set-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -QueueObj $queue

自動転送を有効にしたトピックのサブスクリプションを作成するには、メッセージの転送先のキューまたはトピックの名前を -ForwardTo に設定して New-AzServiceBusSubscription コマンドを使用します。

New-AzServiceBusSubscription -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -TopicName mytopic `
    -SubscriptionName mysubscription `
    -ForwardTo myqueue2

既存のサブスクリプションの自動転送設定を更新するには、次の例を参照してください。

$subscription=Get-AzServiceBusSubscription -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -TopicName mytopic `
    -SubscriptionName mysub

$subscription.ForwardTo='mytopic2'

Set-AzServiceBusSubscription -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -SubscriptionName mysub `
    -SubscriptionObj $subscription 

Azure Resource Manager テンプレートの使用

自動転送を有効にしたキューを作成するには、メッセージの転送先のキューまたはトピックの名前をキューの properties セクションの forwardTo に設定します。 詳細については、Microsoft.ServiceBus の名前空間/キューのテンプレート リファレンスに関するページを参照してください。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serviceBusNamespaceName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus namespace"
      }
    },
    "serviceBusQueueName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Queue"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.ServiceBus/namespaces",
      "apiVersion": "2018-01-01-preview",
      "name": "[parameters('serviceBusNamespaceName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {},
      "resources": [
        {
          "type": "Queues",
          "apiVersion": "2017-04-01",
          "name": "[parameters('serviceBusQueueName')]",
          "dependsOn": [
            "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
          ],
          "properties": {
            "forwardTo": "myqueue2"
          }
        }
      ]
    }
  ]
}

自動転送を有効にしたトピックのサブスクリプションを作成するには、メッセージの転送先のキューまたはトピックの名前をキューの properties セクションの forwardTo に設定します。 詳細については、Microsoft.ServiceBus の名前空間/トピック/サブスクリプションのテンプレート リファレンスに関するページを参照してください。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "service_BusNamespace_Name": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus namespace"
      }
    },
    "serviceBusTopicName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Topic"
      }
    },
    "serviceBusSubscriptionName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Subscription"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "resources": [
    {
      "apiVersion": "2018-01-01-preview",
      "name": "[parameters('service_BusNamespace_Name')]",
      "type": "Microsoft.ServiceBus/namespaces",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {},
      "resources": [
        {
          "apiVersion": "2017-04-01",
          "name": "[parameters('serviceBusTopicName')]",
          "type": "topics",
          "dependsOn": [
            "[resourceId('Microsoft.ServiceBus/namespaces/', parameters('service_BusNamespace_Name'))]"
          ],
          "properties": {
            "maxSizeInMegabytes": 1024
          },
          "resources": [
            {
              "apiVersion": "2017-04-01",
              "name": "[parameters('serviceBusSubscriptionName')]",
              "type": "Subscriptions",
              "dependsOn": [
                "[parameters('serviceBusTopicName')]"
              ],
              "properties": {
                "forwardTo": "myqueue2"
              }
            }
          ]
        }
      ]
    }
  ]
}

.NET

Azure.Messaging.ServiceBus (最新)

自動転送機能を有効にするには、CreateQueueOptions.ForwardTo または CreateSubscriptionOptions.ForwardTo を設定してから、CreateQueueOptions または CreateSubscriptionOptions のパラメーターを受け取る CreateQueueAsync または CreateSubscriptionAsync のメソッドを使用します。

Microsoft.Azure.ServiceBus (レガシ)

自動転送は、次の例のようにソースに QueueDescription.ForwardTo または SubscriptionDescription.ForwardTo を設定することで有効にできます。

SubscriptionDescription srcSubscription = new SubscriptionDescription (srcTopic, srcSubscriptionName);
srcSubscription.ForwardTo = destTopic;
namespaceManager.CreateSubscription(srcSubscription));

2026 年 9 月 30 日に、Azure SDK ガイドラインに準拠していない Azure Service Bus SDK ライブラリ WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus、および com.microsoft.azure.servicebus は廃止されます。 SBMP プロトコルのサポートも終了するため、2026 年 9 月 30 日以降はこのプロトコルを使用できなくなります。 この日付より前に、重要なセキュリティ更新プログラムと強化された機能が提供される、最新の Azure SDK ライブラリに移行してください。

以前のライブラリは 2026 年 9 月 30 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。

Java

azure-messaging-servicebus (最新)

自動転送機能を有効にするには、CreateQueueOptions.setForwardTo(String forwardTo) メソッドまたは CreateSubscriptionOptions.setForwardTo(String forwardTo) を使用してから、CreateQueueOptions または CreateSubscriptionOptions パラメーターを受け取る createQueue メソッドまたは createSubscription メソッドを使用します。

azure-servicebus (レガシ)

自動転送を有効にするには、ソースに QueueDescription.setForwardTo(String forwardTo) または SubscriptionDescription.setForwardTo(String forwardTo) を使用します。

2026 年 9 月 30 日に、Azure SDK ガイドラインに準拠していない Azure Service Bus SDK ライブラリ WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus、および com.microsoft.azure.servicebus は廃止されます。 SBMP プロトコルのサポートも終了するため、2026 年 9 月 30 日以降はこのプロトコルを使用できなくなります。 この日付より前に、重要なセキュリティ更新プログラムと強化された機能が提供される、最新の Azure SDK ライブラリに移行してください。

以前のライブラリは 2026 年 9 月 30 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。

次のステップ

Azure Service Bus の機能については、使用する言語のサンプルを試してみてください。

以前の .NET および Java クライアント ライブラリのサンプルについては、以下を参照してください。

2026 年 9 月 30 日に、Azure SDK ガイドラインに準拠していない Azure Service Bus SDK ライブラリ WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus、および com.microsoft.azure.servicebus は廃止されます。 SBMP プロトコルのサポートも終了するため、2026 年 9 月 30 日以降はこのプロトコルを使用できなくなります。 この日付より前に、重要なセキュリティ更新プログラムと強化された機能が提供される、最新の Azure SDK ライブラリに移行してください。

古いライブラリは 2026 年 9 月 30 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。