0

私は ActiveMQ を初めて使用し、キューからメッセージを読み取り、それらをバッチで処理するプロジェクトを行っています。(一度に 100 しか処理できないサードパーティの API にそれらをシャベルしていますが、100 未満でも問題ありません)

私が見つけたすべてのサンプルには、すべてのメッセージをアトミックに処理するイベント ドリブン コードが含まれています。フォームの疑似コードを許可する宝石、プラグイン、またはその他のアプローチはありますか

while(!queue.empty?) do
   chunk = []

   while(!queue.empty? && chunk.size < 100) do 
      chunk << queue.read
   end

   do_something_with(chunk)
end

それとも、これは愚かな用事ですか、それとも何ですか?

4

1 に答える 1

1

この場合、メッセージのグループ化を使用できると思います。そうすれば、送信者がグループ化ヘッダーを設定していれば、メッセージを 1 つのバッチにグループ化できます。ActiveMQ がこれをどのように処理するかについての情報は次のとおりです:メッセージのグループ化に関する ActiveMQ

私は ruby​​ コーダーではありませんが、イベント駆動型 API について話すとき、何らかの "on_message" 関数を使用していると思います。IBM には、メッセージ リスナー (MDB) で JMS メッセージ グループを受信する方法についての優れたチュートリアルがあります。Java と WebSphere MQ ですが、JMS の概念は一貫している必要があります。
MDB での IBM on JMS メッセージのグループ化

それを Rails に変換できる場合とできない場合がありますが、正しいコード サンプルがここに表示されるのを待っている間にヒントが得られるかもしれません。:)

于 2012-06-06T20:34:49.100 に答える