ラビットを捕まえる話

あらゆるところにウサギ ウサギ
lalala lalala lalala ウサギ

水瀬伊織 : ラビットパニック

さて、いきなりラビットパニックから初めて見ましたが、今回はラビット… RabbitMQのお話です。

と言うのも… ま、ぶっちゃけ仕事で使うかもなので技術調査という意味合いが強いです。

そもそもそも、MQとは?私はJMSから使ってきているのでなんとも思いませんが、MQ Message Queueと言うシステム自体にハテナな思いをするといけないといけないのでちゃちゃちゃぁ〜と(オレ流に)説明すると

大まかに二つの種別がございます。

1!通常のキューイング(Queue)

これは単純、パイプが1本、入り口にメッセージを入れると、出口で1個取れます。LIFOです。

rmq.png

このパイプ、LIFOと説明したとおりに、最後が取れるので受ける人が複数いる場合には最初の人しかメッセージを受けられません。

ローカルのキューと一緒ですw

 

次に2つ目のイメージですが、ちょっとややこしいですが
私は新聞をイメージします。

1対多のメッセージです

一つのパケットを送信すると、欲しい人だけ受け取ることが出来ると思ってください。

んで?これが何なの美味しいの?と思われるかもしれません。
ですが、これが別のサーバで動いている事を想像してください。

あるアプリケーションが何らかの処理を行って別のモジュールにそのデータを引き渡す場合にそのデータを別のサーバに投げると?

受けるモジュールと処理するモジュールが完全に分離されます。

これを通称、疎結合と言います。ま、MQになっちゃうと究極の疎結合かな?

うん、ざっくりと説明しましたが、これで何?説明?と思われたかもしれませんが、次回からこの実際のプログラム実装をしてやります!

ターゲットは… JavaとPHP + laravel (これはちょっと反則するかも)

技術メモ的に書いちゃうのでよろしく。

漠然と書くと、DB監視しているプロセスが、変更を察知するとMQに内容を投げる。監視者はメッセージ来るとMattermostにメッセージ投稿!
ってのを考えています。
現在はDB監視部分をちょっと悩んでいます。

めっちゃざっくりですが、こんな感じでした。

ウサギウサギ