私はマルチユーザツリー編集アプリケーションを開発中です。バックグラウンドプロセスにresque gemを使用します。ランタイムのマルチユーザーの競合を避けるために、私はコマンドパターンを使用してユーザーのアクションをresqueキューに保存したいので、他のユーザーがブランチを削除している場合、そのブランチの子を編集することはできません。コマンドパターンを実装するためのresqueの使用
resqueワーカーが5秒間隔でジョブをチェックするので、ジョブは最初にキューから選択するのが非常に遅いです。それは編集インターフェースを著しく遅くする。
cmd = MyCommand.create!(:attr1 => 'foo', :attr2 => 'bar')
Resque.enqueue(MyCommand, cmd.id)
workers = Resque.workers.select {|w| w.queues.include?('my_queue') }
raise "Should be only one queue for commands!" if workers.size != 1
not_done = true
while not_done
not_done = workers[0].process
end
私が必要とすることはありますが、これを行うよりエレガントな方法があるのだろうかと思います。また、:processは、Workerインスタンスの非推奨メソッドです。
私はrealtime/redisの速度に感心しています。GUIのレイテンシが10-20ミリ秒以下であれば気にしません。 Resqueはまた、ボックス外の特定のタスクに別のプロセッサを利用することを可能にする。だから、今私はmemcachedまたはメモリ内のソリューションに切り替える強い理由は見当たらない – dimus