Service Bus パーティションを使用すると、キューとトピック、またはメッセージング エンティティを複数のメッセージ ブローカー間でパーティション分割できます。 パーティション分割とは、パーティション分割されたエンティティの全体的なスループットが、単一のメッセージ ブローカーのパフォーマンスによって制限されなくなったことを意味します。 パーティション分割されたキューとトピックには、トランザクションやセッションのサポートなど、すべての高度な Service Bus 機能を含めることができます。 詳細については、「パーティション分割されたキューとトピック」を参照してください。 この記事では、Service Bus Premium 名前空間のパーティション分割を有効にするさまざまな方法について説明します。 この名前空間内のすべてのエンティティはパーティション分割されます。
注
- JMS は現在、パーティション分割された名前空間ではサポートされていません。
- Premium レベルで名前空間の作成時にパーティション分割を有効にすることができます。
- パーティション分割されていないエンティティをパーティション分割された名前空間に作成することはできません。
- 既存の名前空間でパーティション分割オプションを変更することはできません。 名前空間の作成時にパーティションの数を設定します。
- 割り当てられたメッセージング ユニットの数は、常に名前空間内のパーティション数の乗数であり、パーティション間で均等に分散されます。 たとえば、16 MU と 4 つのパーティションがある名前空間では、各パーティションに 4 MU が割り当てられます。
- メッセージング ユニット (MU) が低い複数のパーティションを使用すると、より高い RU を持つ 1 つのパーティションに対するパフォーマンスが向上します。
- Service Bus の地理的災害復旧機能を使用する場合は、パーティション化された名前空間をパーティション化されていない名前空間と組み合わせないでください。
- Standard レベルの名前空間を Premium レベルのパーティション分割された名前空間に 移行 することはできません。
- パーティション分割された名前空間では、個別の SessionId または PartitionKey を使用したメッセージのバッチ処理はサポートされていません。
- この機能は現在、インド西部、カタール中部、オーストリア東部を除くすべてのリージョンで使用できます。
Azure Portal の使用
Azure portal で名前空間を作成する場合は、次の図に示すように、[パーティション分割] を [有効] に設定し、パーティションの数を選択します。
Azure CLI の使用
パーティション分割が有効な名前空間を作成するには、az servicebus namespace create コマンドを使用し、--premium-messaging-partitions 1 より大きい数値に設定します。
az servicebus namespace create \
--resource-group myresourcegroup \
--name mynamespace \
--location westus
--sku Premium
--premium-messaging-partitions 4
Azure PowerShell の使用
パーティション分割が有効な名前空間を作成するには、New-AzServiceBusNamespace コマンドを使用し、-PremiumMessagingPartition 1 より大きい数値に設定します。
New-AzServiceBusNamespace -ResourceGroupName myresourcegroup `
-Name mynamespace `
-Location westus `
-PremiumMessagingPartition 4
テンプレートの使用
パーティション分割が有効になっている名前空間を作成するには、名前空間のプロパティ セクションで premiumMessagingPartitions を 1 より大きい数値に設定します。 次の例では、パーティション分割された名前空間が 4 つのパーティションで作成され、各パーティションに 1 つのメッセージング ユニットが割り当てられます。 詳細については、 Microsoft.ServiceBus 名前空間テンプレート リファレンスを参照してください。
@description('Name of the Service Bus namespace')
param serviceBusNamespaceName string
@description('Location for all resources.')
param location string = resourceGroup().location
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2024-01-01' = {
name: serviceBusNamespaceName
location: location
sku: {
name: 'Premium'
capacity: 4
}
properties: {
premiumMessagingPartitions: 4
}
}
次のステップ
任意の言語のサンプルを使用して、Azure Service Bus の機能を確認します。