Open3

Azureのメッセージングサービス

inoyinoy

Azureのメッセージングサービス

Azure ドキュメントにある通り、Azureにはメッセージングサービスがいくつかある。

  • Azure Event Grid
  • Azure Event Hubs
  • Azure Service Bus

他にも Azure Queue Storage とか Azure Web PubSub とかあるっぽい。

Hidden comment
inoyinoy

Azure Event Grid vs Service Bus

https://www.linkedin.com/pulse/azure-event-grid-vs-service-bus-eklavya-gupta/

和訳とノート。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に決めてそれ推しのための理由付けな感…。