rabbitMQ デッドレターキューのメモ

スポンサーリンク

昨日の勉強会で教えて頂いた事のメモ。自分用のメモなので、解説とかない。大した整形もしない。余裕が出来たら綺麗にするかもしれない。

外でここに書いて、会社で使う
なんて合法的なサービス残業(笑)

昨日、rabbitMQに詳しい人にお話を伺ったので、メモ。

複雑なゲームサービス基盤の刷新でgumiが直面した壁――マイクロサービス化実現の鍵とは?【デブサミ関西2017】
 2007年に設立され、世界各国でソーシャルゲームを開発、提供しているgumi。同社ではゲームに必要な「認証」「課金」などの機能を、モノリシックな設計からマイクロサービスに移行し、基盤を新しく設計している。マイクロサービス化するメリットとしては、疎結合であるため、適した技術を選択できることや再利用しやすいこと、障害を限...

すごい面白かったです。

デッドレターキューとは?

キューに残り続けているメッセージを避けてくれる仕組み。
残り続けている。の判断は、リトライ回数や残り続けている時間など、好きに指定が出来る。

なぜ使うのか?

メッセージがずっと読み込まれない時(ワーカーが、エラーを吐き続ける状態や、全て死んでいる状態の時)に、色んな事をしてくれて便利だから。

MQのチューニング

デッドレターキューの設定をリトライ回数にしろ、時間にしろ設定したなら、その設定分のメッセージ蓄積に耐えられるだけの性能が必要。
また、どこまですると落ちるのかという、限界を知った上で運用することも必要。

デッドレターキューのワーカー

デッドレターキューに溜め込んで終わりでは意味が無い。

下記の二つは必須。他、エラー時の処理があるなら、それを動かしてもいい。が、の処理自体が不安定になってしまうと、さらに監視が必要になってしまう。安定している処理を書く必要がある。
・メッセージの永続化(ディスクに書き込む)。
・デッドレターキューが発生していることのアラート。

上記のように複数の作業がある場合、デッドレターエクスチェンジャーを複数キューがバインドするのがよい。

また、ディスクに書き込むジョブと、ディスクから元々メッセージがあった場所にメッセージを戻す処理はセットで事前に用意しておき、
手動復旧は必要ないようにしておくべき。

続きは仕事終わってから書く。

スポンサーリンク
スポンサーリンク
tips
るなをフォローする
マイクロサービスの自由研究

コメント

タイトルとURLをコピーしました