Queue/Topicが使えるサービス

以下は2019/06/112024/11/11現在の情報に基づきます。そのため、将来の機能改廃に伴って記述内容との乖離が発生する可能性があります。

Azureで提供しているQueue/Topic機能を有するサービス

以下のものがある。

  • Queue Storage
  • Azure Event Grid
  • Azure Service Bus
  • Azure Event Hubs

選定のポイント

Queue StorageとService Busの比較は以下を参照。

Storage キューと Service Bus キューの比較 / Storage queues and Service Bus queues – compared and contrasted
https://docs.microsoft.com/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted

Queue/TopicとEvent Hubの違い

Queue/TopicEvent Hub
Unit of Work (作業単位)メッセージStream
インフラ軽量重量

選択の指針

Queue Storage
https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-queue-storage-limits
特定の追加要件のないシンプルなキューが必要な場合
キューを通ったすべてのメッセージの監査証跡が必要な場合
キューのサイズが 80 GB を超えると予想される場合
キュー内のメッセージ処理の進行状況の追跡が必要な場合
メッセージ保持期間を10,675,199日を超える期間に設定したい場合
Azure Service Bus (Queue)
https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#service-bus-limits
At-Most-Once 配信保証が必要な場合
FIFO保証が必要
メッセージをトランザクションにグループ化する必要がある場合
キューをポーリングせずにメッセージ受信できる必要がある場合
キューにロール ベースのアクセス モデルを設定する必要がある場合
64 KB を超えるが 100MB 未満のメッセージを処理すればよい場合
キューのサイズが 80 GB を超えない場合
バッチ メッセージの発行および利用が必須の場合
Azure Service Bus (Topic)
https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#service-bus-limits
各メッセージを処理する複数の受信側が必要な場合
Azure Event Grid
https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#event-grid-limits
ソースをサブスクライバーに簡単に接続したい場合
トピックから受け取るイベントに対し、フィルタリングで細かく制限したい場合
同じイベントやトピックにエンドポイントを無制限にサブスクライブさせたい場合
イベントの配信を、各サブスクリプションに対して最大で 24 時間再試行させる必要がある場合
送信するイベント数のみに対する従量課金を選択したい場合
MQTTをサポートしたい場合
Azure Event Hubs
https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#event-hubs-limits
多数の発行元の認証をサポートする必要がある場合
Data Lake または BLOB ストレージにイベントのストリームを保存する必要がある場合(Streaming)
イベント ストリームの集計または分析が必要な場合(Streaming Analytics)
信頼できるメッセージングまたは回復性が必要な場合

Service Busについて

注意点

いわゆるSOAミドルウェアの場合、Service Busが送信側からメッセージを受け取ると受信側に転送する振る舞いだが、Azure Service Busの場合、送受信ともService Busに接続し、受信側はCallbackを登録(Long Polling)して着信を待つ(SOAミドルウェアの場合転送メッセージを内部で保持しないことが多い)点と、蓄積交換型のミドルウェアのような振る舞いをする点に特徴がある。もしSOAミドルウェアと同様の振る舞いをさせるには、WCF Relay(旧Service Bus Relay、WCF:Windows Communication Foundationベース)を使う。

注意:Azure Relayの場合、WebSocketを使う。Relayの種類と機能の違いは以下を参照。

機能 / Features
https://docs.microsoft.com/azure/service-bus-relay/relay-what-is-it#features

接続できるプロトコル

Service BusではHTTPベースの通信だけでなく、AMQP、JMSでのメッセージ送受信も可能(AMQP 1.0、JMS 1.1もしくは2.0)。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください