1

1000 のレコードを持つ hazelcast キュー (サーバー インスタンス間で共有) があります。レコードは、ある種のジョブ (電子メール、SMS などの送信など) です。これらのレコードをキューから選択して処理する必要があります。高速化するために、レコードが複数のスレッドによって非同期に処理されるように、エグゼキューター サービスを使用することを考えています。

このアプリケーションは複数のサーバーに展開されるため、複数のサーバーのキュー内のレコードの処理順序に少し混乱しています。キューからレコードを取得して処理するようにエグゼキューターを構成するにはどうすればよいですか。1 秒ごとに呼び出されるようにエグゼキュータを設定して、処理からレコードをフェッチし続ける必要がありますか。

問題を適切に説明できるかどうかはわかりませんが、(サーバー インスタンス間で) 共有キューでエグゼキュータ サービスを使用しようとしているだけです。

前もって感謝します!!

4

1 に答える 1

1

hazelcast executor サービスの使用を検討することをお勧めします。ローカル スレッド プールに hazelcast キューを使用してみましたが、タスクが適切に分散されないという経験がありました。

http://www.hazelcast.com/docs/2.5/manual/multi_html/ch09.html

クラスター全体でジョブの実行を自動的に分散します。

ジョブがCallableを実装すると仮定すると、次のことができます

Future<T> future =  hazelcastInstance.getExecutorService([optional name]).submit(job);
//if you want the return value of the job, you can do this:
T value = future.get(); //This blocks until the job is done

異なる名前を使用して、複数の分散スレッド プールを構成できます。

于 2013-04-16T16:37:23.090 に答える