0

(トルクボックス スケジューラを使用して) データのサービスを定期的に呼び出すアプリケーションがあり、データのセットが利用可能になると、各「データ レコード」を個別に処理する必要があります。

パフォーマンスを向上させるためにこれらのレコードを同時に処理したいのですが、最初に考えたのは、スケジュールされたジョブが受信したすべてのデータをキューに入れ、各レコードが選択されるように、jms キュー (ボックスのトルクボックスで利用可能) をセットアップすることでした。アップ (接続されている複数の受信機の 1 つ) を処理します。

しかし、同じアプリケーションの要素間に JMS キューを配置するのはやり過ぎではありませんか? ここで提案できる他のアプローチはありますか?

4

2 に答える 2

2

JMS キューはまったく悪い解決策ではないかもしれません。試してみて、どのように機能するかを確認してください。Torquebox のように使いやすい場合は、過度に設計する必要はありません。

あまり関与しないものが必要な場合は、正確なユースケースに応じて、LinkedBlockingQueueまたはArrayBlockingQueueのいずれかのJava 独自のBlockingQueueを使用することをお勧めします。

これらは配列やハッシュなどの通常のコレクションにすぎないため、どこかに作成して、公開して使用できるようにするコンポーネントに渡す必要があります。また、JMS キューのような確認応答の概念もありません。

于 2013-02-23T20:27:34.773 に答える
0

HornetQ は JBoss/Torquebox の一部であるため、(前述のように) Java メッセージング キューを使用し、メッセージの処理にメッセージ プロセッサを使用するのはどうですか。また、torkbox.rb (または .yml) で同時実行のレベルを指定することもできます。

Your_Scheduled_Job -> /queues/my_queue -> TorqueBox::Messaging::MessageProcessor

config/torquebox.rb ファイルで、同時実行性と名前のメッセージング プロセッサを指定できます。

queue '/queues/my_queue' do
  processor MyMessageProcessor do
    concurrency 5
  end
end

メッセージング プロセッサは、他の手順を必要とせずに、キュー上のメッセージを同時に処理します。

また、Torquebox と Ruby の同時実行性についても実験を続けており、これを最近実装しようとしています...

于 2013-03-26T16:44:58.510 に答える