Azure Service Bus とはWhat is Azure Service Bus?

Microsoft Azure Service Bus は、フル マネージド エンタープライズ統合メッセージ ブローカーです。Microsoft Azure Service Bus is a fully managed enterprise integration message broker. Service Bus の最も一般的な用途は、アプリとサービスを相互に分離する場合です。Service Bus は非同期データと状態転送に適した信頼性の高い安全なプラットフォームです。Service Bus is most commonly used to decouple applications and services from each other, and is a reliable and secure platform for asynchronous data and state transfer. データは、メッセージを使用してさまざまなアプリとサービス間で転送されます。Data is transferred between different applications and services using messages. メッセージはバイナリ形式であり、JSON、XML、または単なるテキストを含むことができます。A message is in binary format, which can contain JSON, XML, or just text.

一般的なメッセージング シナリオの例を次にいくつか示します。Some common messaging scenarios are:

  • メッセージング: 販売または購入の注文、仕訳帳、在庫移動などのビジネス データを転送します。Messaging: transfer business data, such as sales or purchase orders, journals, or inventory movements.
  • アプリの分離: アプリとサービスの信頼性とスケーラビリティを向上します (クライアントとサービスが同時にオンラインである必要はありません)。Decouple applications: improve reliability and scalability of applications and services (client and service do not have to be online at the same time).
  • トピックとサブスクリプション: 公開元とサブスクライバーの間で 1:n の関係が可能になります。Topics and subscriptions: enable 1:n relationships between publishers and subscribers.
  • メッセージ セッション: メッセージの順序付けやメッセージの遅延が必要なワークフローを実装します。Message sessions: implement workflows that require message ordering or message deferral.

名前空間Namespaces

名前空間は、すべてのメッセージング コンポーネントのスコープ コンテナーです。A namespace is a scoping container for all messaging components. 複数のキューとトピックを 1 つの名前空間に格納できます。多くの場合、名前空間はアプリケーション コンテナーとして機能します。Multiple queues and topics can reside within a single namespace, and namespaces often serve as application containers.

キューQueues

メッセージはキューに送受信されます。Messages are sent to and received from queues. 受信側アプリがメッセージを受信して処理できるようになるまで、キューにメッセージを格納できます。Queues enable you to store messages until the receiving application is available to receive and process them.

キュー

キュー内のメッセージは到着順に並べ替えられ、タイムスタンプが付けられます。Messages in queues are ordered and timestamped on arrival. メッセージは、受理されると、冗長ストレージに安全に保管されます。Once accepted, the message is held safely in redundant storage. メッセージはプル モードで配信され、要求に応じてメッセージが配信されます。Messages are delivered in pull mode, which delivers messages on request.

トピックTopics

トピックを使用してメッセージを送受信することもできます。You can also use topics to send and receive messages. キューはポイント間通信によく使用されますが、トピックは公開/サブスクライブのシナリオで役立ちます。While a queue is often used for point-to-point communication, topics are useful in publish/subscribe scenarios.

トピック

トピックは、複数の独立したサブスクリプションを持つことができます。Topics can have multiple, independent subscriptions. トピックのサブスクライバーは、そのトピックに送信された各メッセージのコピーを受信できます。A subscriber to a topic can receive a copy of each message sent to that topic. サブスクリプションは名前付きエンティティであり、永続的に作成されますが、必要に応じて期限切れまたは自動削除にすることができます。Subscriptions are named entities, which are durably created but can optionally expire or auto-delete.

シナリオによっては、トピックに送信されたすべてのメッセージを個々のサブスクリプションに受信させたくない場合があります。In some scenarios, you may not want individual subscriptions to receive all messages sent to a topic. そのような場合は、ルールとフィルターを使用して、オプションのアクションをトリガーし、指定されたメッセージをフィルター処理し、メッセージのプロパティを設定または変更する条件を定義することができます。If so, you can use rules and filters to define conditions that trigger optional actions, filter specified messages, and set or modify message properties.

高度な機能Advanced features

Service Bus には、より複雑なメッセージングの問題を解決できる高度な機能もあります。Service Bus also has advanced features that enable you to solve more complex messaging problems. 以下のセクションでは、その主な機能について説明します。The following sections describe these key features:

メッセージ セッションMessage sessions

Service Bus の先入れ先出し (FIFO) 処理を保証するには、セッションを使用します。To realize a first-in, first-out (FIFO) guarantee in Service Bus, use sessions. メッセージ セッションでは、関連メッセージのバインドなしシーケンスの結合および順序指定処理が可能です。Message sessions enable joint and ordered handling of unbounded sequences of related messages.

自動転送Auto-forwarding

自動転送機能を使用すると、キューまたはサブスクリプションを同じ名前空間に属する別のキューまたはトピックにチェーンできます。The auto-forwarding feature enables you to chain a queue or subscription to another queue or topic that is part of the same namespace. 自動転送が有効な場合は、Service Bus は、一方のキューまたはサブスクリプション (転送元) にあるメッセージを自動的に削除し、もう一方のキューまたはトピック (転送先) に追加します。When auto-forwarding is enabled, Service Bus automatically removes messages that are placed in the first queue or subscription (source) and puts them in the second queue or topic (destination).

配信不能処理Dead-lettering

Service Bus は、受信者に配信できないメッセージ、または処理できなかったメッセージを保持するために配信不能キュー (DLQ) をサポートしています。Service Bus supports a dead-letter queue (DLQ) to hold messages that cannot be delivered to any receiver, or messages that cannot be processed. そのため、DLQ のメッセージを削除し、検査することができます。You can then remove messages from the DLQ and inspect them.

スケジュールされた配信Scheduled delivery

メッセージを、遅延処理されるようにキューまたはトピックに送信できます。たとえば、特定の時刻にシステムによって処理可能になるようにジョブをスケジュール設定できます。You can submit messages to a queue or topic for delayed processing; for example, to schedule a job to become available for processing by a system at a certain time.

メッセージ遅延Message deferral

キューまたはサブスクリプションのクライアントが処理すべきメッセージを受信したものの、アプリケーション内の特別な状況が原因ですぐに処理を行えない場合、メッセージを取得するタイミングを遅延させることができます。When a queue or subscription client receives a message that it is willing to process, but for which processing is not currently possible due to special circumstances within the application, the entity has the option to defer retrieval of the message to a later point. メッセージは、キューまたはサブスクリプションに留まり、確保されます。The message remains in the queue or subscription, but it is set aside.

バッチ処理Batching

クライアント側のバッチ処理により、キューまたはトピックのクライアントはメッセージの送信を一定期間遅らせることができます。Client-side batching enables a queue or topic client to delay sending a message for a certain period of time. クライアントがこの期間内に追加のメッセージを送信すると、1 つのバッチで複数のメッセージが送信されます。If the client sends additional messages during this time period, it transmits the messages in a single batch.

トランザクションTransactions

トランザクションにより、複数の操作が 1 つの実行スコープにグループ化されます。A transaction groups two or more operations together into an execution scope. Service Bus は、トランザクションのスコープ内の単一メッセージング エンティティ (キュー、トピック、サブスクリプション) に対するグループ化操作をサポートしています。Service Bus supports grouping operations against a single messaging entity (queue, topic, subscription) within the scope of a transaction.

フィルター処理とアクションFiltering and actions

サブスクライバーは、トピックから受信するメッセージを定義できます。Subscribers can define which messages they want to receive from a topic. これらのメッセージは、1 つ以上の名前付きのサブスクリプション ルールの形式で指定されます。These messages are specified in the form of one or more named subscription rules. サブスクリプションは、対応するルールの条件ごとに、対応する各ルールに異なる注釈を付けることができる、メッセージのコピーを作成します。For each matching rule condition, the subscription produces a copy of the message, which may be differently annotated for each matching rule.

アイドル状態時の自動削除Auto-delete on idle

アイドル状態時の自動削除機能を使用すると、アイドル間隔を指定できます。この間隔が経過すると、キューは自動的に削除されます。Auto-delete on idle enables you to specify an idle interval after which the queue is automatically deleted. 最小時間は、5 分です。The minimum duration is 5 minutes.

重複検出Duplicate detection

クライアントが送信操作の結果について何か疑問を持つようなエラーが発生した場合、重複メッセージの検出機能は、送信側が同じメッセージを再送信することを可能にすることで、このような状況を解決します。重複メッセージは、キューまたはトピックで削除されます。If an error occurs that causes the client to have any doubt about the outcome of a send operation, duplicate detection takes the doubt out of these situations by enabling the sender to re-send the same message, and the queue or topic discards any duplicate copies.

SAS、RBAC、および Azure リソースのマネージド IDSAS, RBAC, and Managed identities for Azure resources

Service Bus は、Shared Access Signatures (SAS)、ロールベースのアクセス制御 (RBAC)、および Azure リソースのマネージド ID などのセキュリティ プロトコルをサポートしています。Service Bus supports security protocols such as Shared Access Signatures (SAS), Role Based Access Control (RBAC) and Managed identities for Azure resources.

geo ディザスター リカバリーGeo-disaster recovery

Azure リージョンまたはデータセンターでダウンタイムが発生すると、geo ディザスター リカバリーにより、異なるリージョンまたはデータ センターでデータ処理を継続できます。When Azure regions or datacenters experience downtime, Geo-disaster recovery enables data processing to continue operating in a different region or datacenter.

セキュリティSecurity

Service Bus は、標準の AMQP 1.0 および HTTP/REST プロトコルをサポートしています。Service Bus supports standard AMQP 1.0 and HTTP/REST protocols.

クライアント ライブラリClient libraries

Service Bus は、.NETJavaJMS のクライアント ライブラリをサポートしています。Service Bus supports client libraries for .NET, Java, JMS.

統合Integration

Service Bus は、以下の Azure サービスと完全に統合されています。Service Bus fully integrates with the following Azure services:

次の手順Next steps

Service Bus メッセージングの基本的な使い方については、以下の記事を参照してください。To get started using Service Bus messaging, see the following articles: