Service Bus の作成

Service Busとは「メッセージング」処理を提供するサービスです。
メッセージングとは、何でしょうか?
メッセージングとは、分離したシステム間でのメッセージのやりとりを指します。
通常だと、システム通信は1対1で行うのですが、この方式だと都合が悪い状況があります。
例えば、送信側は、メッセージを送信した後、受信側からの受取連絡をもらうまで、
待機状態が発生し、次の送信処理に移れません。

そこで登場するのが、Service Bus のようなメッセージングシステムです!!

Service Bus を利用するとイイことがあります。
非同期:送信側は受信側の状態を気にせず、メッセージ送信が可能。メッセージ保持機能。
負荷平準化:受信側はピーク時を避けてメッセージを処理できる。
負荷分散:受信側の数を増やす事で多くのメッセージを処理できる。

Service Bus には二種類のメッセージング方法があります。

【Service Bus キュー】

[特徴]
・送信側から受信側への一方向 ※PTPメッセージングモデル
・1メッセージ=1受信者 ※送信側と受信側に関係性は無い
・配信順序:FIFO
・配信方法:
ーAt-Most-Once=最高1回送信。応答確認しないので、届かない場合がある。
ーAt-Least-Once=最低1回送信。応答があるまで再送するので、重複受信する場合がある。
・受信モード:
ーReceive & Delete= 受信者がメッセージを受信すると、メッセージを自動的に削除します。
ーPeek & Lock= 受信者からの読み取り要求があると、他の受信者に読み取らせないようにメッセージをロックします。しかも、受信者が読み取り途中に障害などでダウンした場合、ロック状態にあるメッセージのロックを解除し、再度受信する事ができます。メッセージは、Lock duration後に削除される。
・排他方法:ロックベース(default 60sec)
・プロトコル:AMQP1.0、SBMP、HTTP
・最大メッセージサイズ:256KB、1MB(Premiumプラン)
・キューサイズ:1GB~80GB
・メッセージ保存期間:無期限
※DLQが自動作成される。配信不能、配信エラーのメッセージが送られる。自動削除無し。再取り出し可能

【Service Bus トピック】

[特徴]
・送信側から受信側への一方向 ※Pub/Subメッセージングモデル
・1メッセージ=多受信者 ※送信側と受信側に関係性は無い
・メッセージ送信の単位を[サブスクリプション]で仕分ける。※Azureサブスクリプションとは無関係
あとは、[Service Bus キュー]と同様


それでは、作成してみましょう!!

[+新規]ー[Enterprise Integration]ー[Service Bus]

名前:表示名
価格レベル:Premiumは作成時のみ選択可能
サブスクリプション:Azureサービスの提供範囲
リソースグループ:グループ名(複数のリソースを1つにグループ化する機能)
場所:デプロイするAzureのリージョン

作成した、Service Bus を選択し、[キュー]を選択

名前:表示名
最大サイズ:1~5GB。1パーティションあたりのメッセージの保存サイズ。
Message time to live (default):1~∞[秒/分/時間/日]。メッセージの保存期間。
Lock duration:1~5[秒/分]。メッセージロック時間
期限切れのメッセージを配信不能サブキューに移動します:dead-letter queue (DLQ)
重複データ検出を有効にする:[MessageId]が重複した場合、一方を削除します。※パフォーマンスが下がる。
セッションを有効にする:特定の受信者に配信する際に利用。※パフォーマンスが下がる。
パーティション分割を有効にする:パーティションが16コ作成される。最大サイズ×16=GB分保存が可能
※Max delivery count:10 ※指定回数の配信が失敗するとDLQに移動

作成した、Service Bus を選択し、[トピック]を選択

名前:表示名
最大サイズ:1~5GB。メッセージの保存サイズ
Message time to live (default):1~∞[秒/分/時間/日]。トピックTTL
重複データ検出を有効にする:[MessageId]が重複した場合、一方を削除します。※パフォーマンスが下がる。
パーティション分割を有効にする:パーティションが16コ作成され、最大サイズ×16=GB分保存が可能

作成した、トピック を選択し、[サブスクリプション]を選択

名前:表示名
Message time to live (default):1~∞[秒/分/時間/日]。サブスクリプションTTL
Lock duration:1~5[秒/分]。メッセージロック時間
Max delivery count:※指定回数の配信が失敗するとDLQに移動
期限切れのメッセージを配信不能サブキューに移動します:DLQ
フィルター評価の例外の原因となるメッセージを配信不能サブキューに移動します:DLQ
セッションを有効にする:特定の受信者に配信する際に利用。※パフォーマンスが下がる。