処理を非同期化するためにメッセージキュー及びジョブキューを利用したプログラムの実装をについて質問です。


実装はPERLで
メッセージキューにはPOE::Component::MessageQueue
ジョブキューにはSwarmage/TheSchwartz/Gearmanを検討してます。
(調べた限りでは。他になんか良いのがあれば教えてほしいです)

個人的な理解として、
メッセージキューは
メッセージの送信→キューに保存→メッセージを受信

ジョブキューは
ジョブの登録→キュー保存→なんらかの処理を実行

と考えていて、最後の処理が文字列でくるのかプロシージャで実行までするかの違いだと思ってます。

メッセージキューの最後がechoのコマンドと考えると、
どちらも同じように見えるため混乱してます。

利用用途として明確な違いがあるのか、
根本的に理解が間違っているのか
結局は同じだよとか
そのあたりを教えて頂ければと思います。

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/12/07 14:44:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:shellcat No.1

回答回数6ベストアンサー獲得回数0

ポイント60pt

明確な違いは「格納するモノ」だと思います。

「メッセージ」とは「起こったことをプロセスに知らせるもの」で

「ジョブ」とは「実行すべき処理内容」です。

メッセージは単なる数値や文字列でも構いません。

「どのようなことが」「どのような状況で」起こったかを

プロセスが知ることができれば良いのです。

対してジョブは、それ自身が何をすべきか知っている必要があります。

つまり、何らかのオブジェクト(又はコードリファレンス等)であるべきです。


結局のところキューはFIFOに分類される「データの扱い型」に過ぎないですし、

メッセージキューとジョブキューの何が違うかということであれば

「用途」

に尽きると思います。

id:saicologic

とてもわかりやすい回答ありがとうございます!

違いがはっきりしてもやもやしてのがとれました。

それぞれのライブラリを使うときは「格納するもの」を意識して使いたいと思います。

2008/12/03 13:53:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません