LoginSignup
17
15

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-03-31

はじめに

AzureのメッセージングサービスをMS Learnで勉強していたが日本語が難解なのでQiita上に翻訳しつつ理解する。

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

  • メッセージ系
    • Queue Storage
      • シンプルなメッセージキュー、データ量が多い場合
    • Service Bus
      • キュー:単一の受信者(サブスクライバ)
      • トピック:複数の受信者(サブスクライバ)
  • イベント系
    • Event Grid
      • シンプルなイベント
    • Event Hubs
      • 高スループット、多数のパブリッシャー、セキュリティ、回復性を持つイベント

メッセージとイベントの違い

項目 メッセージ イベント
データ 含まれる 含まれない(参照のみで軽量)
送信側が受信側を意識するか する しない
特徴 分散アプリで通信の処理を保証したい ブロードキャストで利用、多くの場合一時的

メッセージ

Queue Storageの特徴

  • シンプルなキュー
  • Azure Storageを利用
  • 無制限のキューサイズ
  • RESTベース
  • ストレージの容量で課金
  • 単一の送信先

Service Bus

Service Bus キューの特徴

  • 柔軟なキュー
  • 容量は最大80GB
  • 以下のいずれかを選択可能
    • At-Least-Once:最低1回(重複あり、損失なし)
    • At-Most-Once:最大1回(重複なし、損失あり)
  • トランザクション有(複数メッセージをグループ化)

Service Bus トピックの特徴

  • 複数の送信先
    • 複数クライアントからのサブスクライブ・処理が可能

キューのメリット

  • 信頼性向上
    • メッセージの読み取り側の準備ができるまで待機させられる(非同期に処理できる)
  • メッセージの配信保証
    • At-Least-Once
      • 少なくとも1回。つまり1回は確実に配信されるが、重複(2回以上同じメッセージ)がありうる。
    • At-Most-Once
      • 最大1回。つまり0回=配信されないことがある。重複はない。
    • 先入れ先出し法(FIFO:First in, First out)
      • 通常、先にいれたメッセージが先に出て行く(FIFO)だが、そうでない(順序が保証されない)ものがある。順序が入れ替わると困る場合はFIFO保証を含むシステムを選択する必要がある。
  • トランザクションのサポート
    • グループ化されたメッセージが全て処理されるか、どのメッセージも処理されないかのいずれかの状態になるか。

サービスの選択

Queueストレージ、Serviceバス(キューorトピック)の選択基準は以下の通り。

Queueストレージを選択(最も単純)

  • データ量が多い(キューのサイズが80GBを超える)
  • 簡単にコーディングできるシンプルなキューがほしい

Service Busキューを選択

  • At-Most-Once保証(最大1回、重複なし)が必要
  • 順序保証(FIFO)が必要
  • トランザクションが必要(全て処理される or 何も処理されない)
  • データ量が比較的少ない(キューのサイズが80GB未満)

Service Busトピックを選択(最も複雑)

  • 複数のサブスクライバー(受信者)が必要

イベント

Event Grid

特徴

  • フルマネージドのイベントルーティングサービス
  • イベントベースのアプリや、サーバレスのアプリを簡単にビルドできるようになる
  • ほとんどのAzureサービスからのPublish/Subscribeをサポート
    • サードパーティサービスとも連携可
  • At-Least-Once(少なくとも1回、重複あり)
  • 一度の配信でひとつのイベントを配信

イベントとは

  • EventGridを通過するメッセージデータ
  • イベントは最大64KB
  • 変化の通知が目的でデータは含まれない。多くの場合、データを指すURLや識別子が渡される。

イベントソースとは

  • Event Gridにイベントを送信するクライアント
  • 種類
    • サブスクリプション、リソースグループ
    • コンテナーレジストリ
    • イベントハブ
    • Service Bus
    • ストレージアカウント
    • Media Service
    • Azure IoT Hub
    • カスタムイベント

イベントトピックとは

  • イベントをグループに分類するもの
  • トピックはパブリックのエンドポイントであり、イベントの送信先となる。
  • 以下の2種類がある
    • システムトピック
      • Azure組み込みのトピック。
      • Azureサブスクリプションには表示されないが、サブスクライブは可能。
    • カスタムトピック
      • アプリまたはサードパーティのトピック。
      • サブスクリプションに表示される。

イベントハンドラ(サブスクライバ)とは

  • Event Gridからイベントを受信するコンポーネント
  • 種類
    • Azure Functions
    • Webhook
    • Azure Logic Apps
    • Microsoft Flow

Event Hubs

特徴

  • Event Gridよりも高スループット、多数のパブリッシャー、セキュリティ、回復性を持つ
  • キャプチャ機能を利用して、Azure Data LakeまたはBLOBストレージに永続化
  • 全ての発行元(パブリッシャー)が認証・トークンが発行される
  • At-Least-Once(少なくとも1回、重複あり)
17
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15