啟用 Azure 服務匯流排佇列和訂用帳戶的自動轉送

服務匯流排自動轉送功能可讓您將佇列或訂用帳戶鏈結至另一個屬於相同命名空間的佇列或主題。 啟用自動轉送後,服務匯流排會自動移除放在第一個佇列或訂用帳戶 (來源) 中的訊息,然後將其放入第二個佇列或主題 (目的地) 中。 仍有可能將訊息直接傳送至目的地實體。 如需詳細資訊,請參閱使用自動轉送鏈結服務匯流排實體。 本文說明啟用服務匯流排佇列和訂用帳戶自動轉送的不同方式。

重要

服務匯流排的基本層不支援自動轉送功能。 標準層和進階層則支援此功能。 如需這些階層之間的差異,請參閱服務匯流排定價

使用 Azure 入口網站

在 Azure 入口網站中建立主題的佇列訂用帳戶時,請如下列範例所示,選取 [將訊息轉送至佇列/主題]。 然後,指定您是否要將訊息轉送至佇列或主題。 在此範例中,會選取 [佇列] 選項,並選取來自相同命名空間的佇列。

建立已啟用自動轉送的佇列

Enable auto forward at the time of the queue creation

為已啟用自動轉送的主題建立訂用帳戶

Enable auto forward at the time of the subscription creation

更新現有佇列的自動轉送設定

在服務匯流排佇列的 [概觀] 頁面上,選取 [將訊息轉送至] 設定的目前值。 在下列範例中,目前的值為 [已停用]。 在 [將訊息轉送至佇列/主題] 視窗中,您可以選取要轉送訊息的目標佇列或主題。

Enable auto forward for an existing queue

更新現有訂用帳戶的自動轉送設定

在服務匯流排訂用帳戶的 [概觀] 頁面上,選取 [將訊息轉送至] 設定的目前值。 在下列範例中,目前的值為 [已停用]。 在 [將訊息轉送至佇列/主題] 視窗中,您可以選取要轉送訊息的目標佇列或主題。

Enable auto forward for an existing subscription

使用 Azure CLI

若要建立已啟用自動轉送的佇列,請使用 az servicebus queue create 命令並將 --forward-to 設定為您要轉送訊息的佇列或主題名稱。

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

若要更新現有佇列的自動轉送設定,請使用 az servicebus queue update 命令並將 --forward-to 設定為您要轉送訊息的佇列或主題名稱。

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

若要建立已啟用自動轉送的主題訂用帳戶,請使用 az servicebus topic subscription create 命令並將 --forward-to 設定為您要轉送訊息的佇列或主題名稱。

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

若要更新主題訂用帳戶的自動轉送設定,請使用 az servicebus topic subscription update 命令並將 --forward-to 設定為您要轉送訊息的佇列或主題名稱。

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

使用 Azure PowerShell

若要建立已啟用自動轉送的佇列,請使用 New-AzServiceBusQueue 命令並將 -ForwardTo 設定為您要轉送訊息的佇列或主題名稱。

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

若要為已啟用自動轉送的主題建立訂用帳戶,請使用 New-AzServiceBusSubscription 命令並將 -ForwardTo 設定為您要轉送訊息的佇列或主題名稱。

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 範本

若要建立已啟用自動轉送的佇列,請將佇列屬性區段中的 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"
          }
        }
      ]
    }
  ]
}

若要為已啟用自動轉送的主題建立訂用帳戶,請將佇列屬性區段中的 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.ForwardToCreateSubscriptionOptions.ForwardTo,然後使用採用 CreateQueueOptionsCreateSubscriptionOptions 參數的 CreateQueueAsyncCreateSubscriptionAsync 方法,來啟用自動轉送功能。

Microsoft.Azure.ServiceBus (舊版)

透過為來源設定 QueueDescription.ForwardToSubscriptionDescription.ForwardTo,即可啟用自動轉送,如下列範例所示:

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

在 2026 年 9 月 30 日,我們將淘汰不符合 Azure SDK 準則的 Azure 服務匯流排 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),然後使用採用 CreateQueueOptionsCreateSubscriptionOptions 參數的 createQueue 方法或 createSubscription 方法,來啟用自動轉送功能。

azure-servicebus (舊版)

您可以針對來源使用 QueueDescription.setForwardTo (String forwardTo)SubscriptionDescription.setForwardTo (String forwardTo) 來啟用自動轉送。

在 2026 年 9 月 30 日,我們將淘汰不符合 Azure SDK 準則的 Azure 服務匯流排 SDK 程式庫 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus 和 com.microsoft.azure.servicebus。 我們也將結束 SBMP 通訊協定的支援,因此您將無法在 2026 年 9 月 30 日之後再使用此通訊協定。 請在該日期之前移轉至最新的 Azure SDK 程式庫,該程式庫提供重要的安全性更新和改進的功能。

雖然較舊的程式庫仍可在 2026 年 9 月 30 日之後使用,但這些程式庫將無法繼續收到 Microsoft 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告

下一步

請以您所選擇的語言嘗試各式範例,以探索 Azure 服務匯流排的功能。

請在下方尋找舊版 .NET 和 JAVA 用戶端程式庫的範例:

在 2026 年 9 月 30 日,我們將淘汰不符合 Azure SDK 準則的 Azure 服務匯流排 SDK 程式庫 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus 和 com.microsoft.azure.servicebus。 我們也將結束 SBMP 通訊協定的支援,因此您將無法在 2026 年 9 月 30 日之後再使用此通訊協定。 請在該日期之前移轉至最新的 Azure SDK 程式庫,該程式庫提供重要的安全性更新和改進的功能。

雖然較舊的程式庫仍可在 2026 年 9 月 30 日之後使用,但這些程式庫將無法繼續收到 Microsoft 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告