Open3
Azureのメッセージングサービス
Azureのメッセージングサービス
Azure ドキュメントにある通り、Azureにはメッセージングサービスがいくつかある。
- Azure Event Grid
- Azure Event Hubs
- Azure Service Bus
他にも Azure Queue Storage とか Azure Web PubSub とかあるっぽい。
Azure Event Grid vs Service Bus
和訳とノート。Service Bus 推し。
Push vs Pull
- Event GridはPush型で、サブスクライバが送信されてきたものさばききれないとエラーになる可能性がある。
- Service BusはPull型でサブスクライバのペースでさばくから受信しきれないってことがない。
だからService Busの方が耐障害性があるって主張。
Note: Service BusはPull型だからサブスクライバに定期ポーリングの仕組みが必要ってのはあるはず。
Loss of Messages
- Event Grid はサブスクライバに配信された直後にメッセージはトピックから削除される。またサブスクライバでエラーが起きてもメッセージは戻らない。
- Service Bus はサブスクライバがpeek and lock mode(?)では、明示的に削除した場合にのみキューからメッセージが削除される。またサブスクライバでエラー時にはメッセージは Dead letter queue へ自動的に移動され、リトライできる。
Order of Delivery
- Event Grid はメッセージの順序を保証しない
- Service Bus は保証する
Transaction and Duplicate Detection
- Event Gridはトランザクションと重複の検知をサポートしない
- Service Busはする
Viewer
- Event Gridはパプリッシュされたメッセージを参照する手段をAzureはデフォルトでは提供していない。参照したければ EventGridViewer(?)をサブスクライバに追加するなどが必要。
- Service BusはService Bus Explorerで参照可能
Message Retention and Lost Policy
- Event Gridはメッセージのパブリッシュ時、再試行回数とTTLを超えた場合、メッセージを(構成されていた場合のみ)Dead-letter queueへdrop(?)する。
- Service Busは長時間キューに残すことも可能
この観点よくわからん。Event GridはPush型だから〜って話もリトライあるなら問題じゃない気がする。し、Service Busのこの章の説明もよくわからん。
##Dead-letter queue
どちらもサポートはしてる。
- Event Gridはストレージアカウントを利用した設定が必要。
- Service Busはデフォルトで利用可能。
Integration with Azure Resources
- Event GridはAzureのリソース、Storage Accounts, Azure Resources, Azure Subscriptionsなどとデフォルトで統合可能。
- Service Busはこの記事に記載がない。
So when to use what?
まあ、ここまでの流れで予想できる通り、この記事ではService Busをお勧めしてる。
// いくつかの観点でService Busに決めてそれ推しのための理由付けな感…。