Azure 服務匯流排 - 常見問題 (FAQ)

本文討論有關 Microsoft Azure 服務匯流排 的一些常見問題。 您也可以流覽 Azure 支援常見問題以取得一般 Azure 定價和支持資訊。

關於 Azure 服務匯流排的一般問題

什麼是 Azure 服務匯流排?

Azure 服務匯流排 是異步傳訊雲端平臺,可讓您在分離的系統之間傳送數據。 Microsoft 提供這項功能即服務,這表示您不需要裝載自己的硬體即可使用它。

什麼是 服務匯流排 命名空間?

命名空間提供範圍容器來尋址應用程式內的 服務匯流排 資源。 建立命名空間是使用 服務匯流排 的必要條件,而且是開始使用的第一個步驟之一。

什麼是 Azure 服務匯流排 佇列?

服務匯流排 佇列是儲存訊息的實體。 當您有多個應用程式,或需要彼此通訊之分散式應用程式的多個部分時,佇列會很有用。 佇列類似於接收多個產品(訊息)的配送中心,然後從該位置傳送。

什麼是 Azure 服務匯流排 主題和訂用帳戶?

主題可以可視化為佇列,且在使用多個訂用帳戶時,會變成更豐富的傳訊模型;基本上是一對多通訊工具。 此發佈/訂閱模型(或 pub/sub)可讓應用程式將訊息傳送至具有多個訂用帳戶的主題,讓多個應用程式接收該訊息。

什麼是分割實體?

傳統佇列或主題是由單一訊息代理程序處理,並儲存在一個訊息存放區中。 分割的佇列或主題是由多個訊息代理程序處理,並儲存在多個訊息存放區中。 這項功能表示分割佇列或主題的整體輸送量不再受限於單一訊息代理程式或傳訊存放區的效能。 此外,傳訊存放區的暫時中斷不會讓分割的佇列或主題無法使用。

使用分割的實體時,不會確保排序。 如果分割區無法使用,您仍然可以從其他分割區傳送和接收訊息。

Azure 服務匯流排 儲存數據的位置?

Azure 服務匯流排 標準層會針對其後端儲存層使用 Azure SQL 資料庫。 針對巴西南部和東南亞以外的所有區域,資料庫備份會裝載在不同的區域(通常是 Azure 配對區域)。 針對巴西南部和東南亞區域,資料庫備份會儲存在相同的區域中,以容納這些區域的數據落地需求。

Azure 服務匯流排 進階層會將元數據和數據儲存在您選取的區域。 針對 Azure 服務匯流排 進階命名空間設定異地災害復原時,元數據會複製到您選取的次要區域。

我需要在防火牆上開啟哪些連接埠?

您可以使用下列通訊協定搭配 Azure 服務匯流排 來傳送和接收訊息:

  • 進階訊息佇列通訊協定 1.0 (AMQP)
  • 含 TLS 的超文字傳輸通訊協定 1.1 (HTTPS)

請參閱下表,以瞭解您需要開啟的輸出 TCP 連接埠,以使用這些通訊協定來與 Azure 服務匯流排 通訊:

通訊協定 連接埠 詳細資料
AMQP 5671, 5672 具有 TLS 的 AMQP。 請參閱 AMQP 通訊協定指南
HTTPS 443 此埠用於 HTTP/REST API 和 AMQP-over-WebSockets

當AMQP透過埠 5671 使用AMQP時,輸出通訊通常也需要 HTTPS 連接埠,因為用戶端 SDK 所執行的數個管理作業,以及從 Microsoft Entra ID 取得令牌(使用時)透過 HTTPS 執行。

官方 Azure SDK 通常會使用 AMQP 通訊協定,從 服務匯流排 傳送和接收訊息。

透過 WebSocket 的 AMQP 通訊協定選項會透過連接埠 TCP 443 (和 HTTP/REST API 一樣) 來執行,但在功能上與一般 AMQP 並無不同。 此選項的初始連線延遲較高 (因為會進行額外的交握來回行程),額外負荷也會多一點 (以便能共用 HTTPS 連接埠)。 如果選取此模式,則 TCP 連接埠 443 就足供進行通訊。 下列選項可供選取 AMQP WebSocket 模式。

語言 選項
.NET (Azure.Messaging.ServiceBus) 使用採用 ServiceBusClientOptions 作為參數的建構函式建立 ServiceBusClient。 將 ServiceBusClientOptions.TransportType 設定為 ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) 建立用戶端物件時,請使用採用 TransportTypeServiceBusConnectionServiceBusConnectionStringBuilder 作為參數的建構函式。

針對採用 transportType 作為參數的建構,請將參數設定為 TransportType.AmqpWebSockets

對於採用 ServiceBusConnection 作為參數的建構函式,請將 ServiceBusConnection.TransportType 設為 TransportType.AmqpWebSockets

如果您使用 ServiceBusConnectionStringBuilder,請使用提供選項的建構函式來指定 transportType

Java (com.azure.messaging.servicebus) 建立用戶端時,將 ServiceBusClientBuilder.transportType 設定為 AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) 建立用戶端時,將 com.microsoft.azure.servicebus.ClientSettings 中的 transportType 設定為 com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript 建立服務匯流排用戶端物件時,請使用 ServiceBusClientOptions 中的 webSocketOptions 屬性。
Python 建立服務匯流排用戶端時,請將 ServiceBusClient.transport_type 設定為 TransportType.AmqpOverWebSocket

在 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 服務匯流排 支援 Java Message Service (JMS)嗎?

我需要新增哪些IP位址才能列入允許清單?

若要尋找要新增至允許清單的連線的正確IP位址,請遵循下列步驟:

  1. 從命令提示字元執行下列命令:

    nslookup <YourNamespaceName>.servicebus.windows.net
    
  2. 記下 Non-authoritative answer 中傳回的 IP 位址。

如果您針對命名空間使用了區域備援,則還需要執行一些步驟:

  1. 首先,在命名空間上執行 nslookup。

    nslookup <yournamespace>.servicebus.windows.net
    
  2. 記下 [非授權回答] 區段中的名稱,其採用下列其中一種格式:

    <name>-s1.cloudapp.net
    <name>-s2.cloudapp.net
    <name>-s3.cloudapp.net
    
  3. 針對尾碼為 s1、s2 和 s3 的每個名稱執行 nslookup,以取得三個執行個體全都在三個可用性區域執行的 IP 位址。

    注意

    nslookup 命令傳回的 IP 位址不是靜態 IP 位址。 在刪除基礎部署或移至不同的叢集之前,它會維持不變,不過不建議或支援使用 IN 位址,而且您必須追蹤 IP 位址的變更。

哪裡可以找到從命名空間來回傳送/接收訊息的用戶端IP位址?

我們不會記錄傳送或接收您命名空間中訊息的用戶端IP位址。 重新產生金鑰,讓所有現有的用戶端都無法驗證及檢閱 Azure 角色型存取控制 (Azure RBAC)設定,以確保只有允許的使用者或應用程式可以存取命名空間。

如果您使用 進階 命名空間,請使用 IP篩選虛擬網路服務端點私人端點 來限制對命名空間的存取。

最佳作法

有哪些 Azure 服務匯流排 最佳做法?

請參閱使用 服務匯流排 改善效能的最佳做法 – 本文說明如何在交換訊息時優化效能。

建立實體之前,我應該知道什麼?

佇列和主題的下列屬性是不可變的。 當您建立實體時,請考慮這項限制,因為這些屬性無法修改,而不需要建立新的取代實體。

  • 資料分割
  • 工作階段
  • 重複資料偵測
  • Express 實體

定價

本節會回答有關 服務匯流排 定價結構的一些常見問題。

服務匯流排 定價和計費文章說明 服務匯流排 中的計費計量。 如需 服務匯流排 定價選項的特定資訊,請參閱 服務匯流排 定價詳細數據

您也可以流覽 Azure 支援常見問題以取得一般 Azure 定價資訊。

如何收取 服務匯流排 費用?

如需 服務匯流排 定價的完整資訊,請參閱 服務匯流排 定價詳細數據。 除了記下的價格之外,您還需支付在布建應用程式之數據中心外輸出的相關數據傳輸費用。

服務匯流排 的使用方式受限於數據傳輸? 什麼不是?

指定 Azure 區域內的任何資料傳輸均不收取任何費用,以及任何輸入數據傳輸。 區域外部的數據傳輸受限於輸出費用,您可以在這裡找到

服務匯流排 記憶體的費用嗎?

否。 服務匯流排 不會收取記憶體費用。 不過,配額會限制每個佇列/主題可以保存的最大數據量。 請參閱下一個常見問題。

我有 服務匯流排 標準命名空間。 為什麼我在資源群組 『$system』 下看到費用?

Azure 服務匯流排 最近升級計費元件。 由於這項變更,如果您有 服務匯流排 標準命名空間,您可能會在資源群組 $system下看到資源的/subscriptions/<azure_subscription_id>/resourceGroups/$system/providers/Microsoft.ServiceBus/namespaces/$system明細專案。

這些費用代表已布建 服務匯流排 標準命名空間的每個 Azure 訂用帳戶的基本費用。

請務必注意,這些費用不是新的,也就是說,它們也存在於先前的計費模型中。 唯一的變更是,它們現在列在 底下 $system。 這是因為新計費系統中的限制,會將訂用帳戶層級費用分組,而不是系結至資源標識符下 $system 的特定資源。

配額

如需 服務匯流排 限制和配額的清單,請參閱 服務匯流排 配額概觀

如何處理大小> 1 MB 的訊息?

服務匯流排 傳訊服務(佇列和主題/訂用帳戶)允許應用程式傳送大小高達 256 KB(標準層)或 100 MB(進階層)的訊息。 如果您要處理大小大於允許大小的訊息,請使用此部落格文章中所述的宣告檢查模式。

疑難排解

為什麼我無法在從另一個訂用帳戶中刪除命名空間之後建立命名空間?

當您從訂用帳戶中刪除命名空間時,請等候 4 小時,再以另一個訂用帳戶中的相同名稱重新建立命名空間。 否則,您可能會收到下列錯誤訊息: Namespace already exists

Azure 服務匯流排 API 及其建議動作所產生的一些例外狀況為何?

如需可能 服務匯流排 例外狀況的清單,請參閱例外狀況概觀

什麼是共用存取簽章,哪些語言支持產生簽章?

共用存取簽章是以 SHA-256 安全哈希或 URI 為基礎的驗證機制。 如需如何在 Node.js、PHP、Java、Python 和 C# 中產生您自己的簽章的相關信息,請參閱 共用存取簽章 一文。

訂用帳戶和命名空間管理

如何? 將命名空間移轉至另一個 Azure 訂用帳戶?

您可以使用 Azure 入口網站 或 PowerShell 命令,將命名空間從一個 Azure 訂用帳戶移至另一個訂用帳戶。 若要執行作業,命名空間必須已經作用中。 執行命令的用戶必須是來源和目標訂用帳戶上的系統管理員。

門戶

若要使用 Azure 入口網站 將 服務匯流排 命名空間移轉至另一個訂用帳戶,請遵循這裡的指示

PowerShell

下列 PowerShell 命令順序會將命名空間從一個 Azure 訂用帳戶移至另一個訂用帳戶。 若要執行這項作業,命名空間必須已經作用中,而且執行 PowerShell 命令的用戶必須是來源和目標訂用帳戶上的系統管理員。

# Create a new resource group in target subscription
Select-AzSubscription -SubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff'
New-AzResourceGroup -Name 'targetRG' -Location 'East US'

# Move namespace from source subscription to target subscription
Select-AzSubscription -SubscriptionId 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
$res = Find-AzResource -ResourceNameContains mynamespace -ResourceType 'Microsoft.ServiceBus/namespaces'
Move-AzResource -DestinationResourceGroupName 'targetRG' -DestinationSubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -ResourceId $res.ResourceId

是否可以在 服務匯流排 命名空間上停用 TLS 1.0 或 1.1?

是,您可以藉由設定最低 TLS 版本,在 服務匯流排 命名空間上停用 TLS 1.0 或 1.1。 如需詳細資訊,請參閱針對要求 服務匯流排 命名空間的要求強制執行傳輸層安全性的最低必要版本。

下一步

若要深入瞭解 服務匯流排,請參閱下列文章: