1

同じシステム上のサービスと直接通信するデスクトップ アプリケーションがあります。それらを分離し、途中でキューを使用したいと思います。私が見つけたキューイング ソリューションのほとんどは、プロセス間通信ではなく、企業での使用を意図したものです。

そこで皆さんに質問です。小規模な永続キューを使用した経験のある方はいますか? Apache Qpid を使用するか、システム上で小さな MySQL インスタンスを実行することを考えていました。Queue for MySQL (http://q4m.github.com/) プロジェクトがありますが、運用システムで使用するには少し古いように見えます。

4

1 に答える 1

0

私は同様の問題に取り組んでいます。データを失う危険を冒さずに各エントリの処理を延期する機能が必要なため、比較的小さなキューをディスクに永続化する必要があります。また、複数のプロセスを同時にキューに入れたり、他のプロセスを同時にデキューしたりする必要があります。

私の現在のアイデアは、各要素がファイルに書き込まれ、ファイル名が要素キーに対応するディスクベースのキューを作成することです。必要なのは、単純な追加、ロック、ロック解除、削除、シーク機能を実装することだけです。単純なアドバイザリ ファイルのロックで十分です (Unix、C 言語)。

これを行う小さなライブラリをまだ見つけていません。私の問題はそれほど複雑ではないので、ますます自分自身を転がすと思います。

高い同時実行性が必要なため、キュー全体をロックする余裕がないため、SQLite を削除しました (キューは単一のテーブルになります)。また、stxxl や ActiveMQ などの大規模なソリューションも排除しました。それらは私のプロジェクトにとって完全にやり過ぎです。ディスクベースのキューイング/デキューイングを実装する IPC-DireQueue Perl モジュールにインスピレーションを得ました (私のプロジェクトでは使用できませんが)。

activemq http://activemq.apache.org/enterprise-integration-patterns.html

stxxl http://stxxl.sourceforge.net/

IPC-DireQueue http://metacpan.org/pod/IPC::DirQueue

于 2011-04-14T15:36:59.903 に答える