ビジネスデータを処理し、応答を返さなければならない Java プログラムが 1 つあります。しかし、これらのデータのバックアップの一部として、そのデータをそのメソッドに配信し、クライアントがそのバックアップ操作が完了するのを待つ必要がないように非同期的にバックアップする別のメソッドを実装したいと考えています。誰かがこれを実装するためのより良い方法を提案できますか? リクエスト数が 100 を超えており、処理されたすべてのデータもバックアップする必要があります。
4 に答える
私はあなたが利用できると思いますjava.util.concurrent.ExecutorService
java.util.concurrent.ExecutorService
このような機能を実装するには、 を利用する必要があります。これにより、スレッド プールのサイズや、タイムアウトや待機などのその他の側面をより細かく制御できます。
Spring 3.0 @Async
では、タスクを非同期で実行できます。Spring Asynch タスクの使用方法の詳細については、このリンクをたどってください。
http://java-success.blogspot.in/2013/05/asynchronous-processiong-with-spring.html
JMS (Hornet) や AMQP (RabbitMQ) などのメッセージ キュー テクノロジの使用を真剣に検討する必要があるようです。
@Async
は小さな雑用には適していますが、拡張性がなく、単純な作業にも適していませんExecutorService
。言うまでもなく、問題はメッセージの問題のように聞こえ、単純なタスクの実行 (バックアップとクライアント通知) ではありません。MQ の理論/実践/実装には多少の読み物が必要なので、Spring AMQP/JMS および一般的なメッセージ キューのドキュメントを参照することをお勧めします。
クライアントへの通知に関しては、新しい spring mvc DeferredResul t を見てください。