Springboot
では、問題に対処するために非同期タスクとスケジュールされたタスクが頻繁に発生します。これら 2 つの構成をうまく活用し、通常の業務を妨げないようにするためです。 , 非同期に設定する必要があります。適切な非同期処理スレッドをセットアップする方法が核心であり鍵です。
プロジェクトで非同期タスクを使用することは、リクエストの待ち時間を短縮し、業務処理の非同期バックグラウンド処理を実行するために、問題を解決するために頻繁に発生する方法です。ユーザーエクスペリエンスを向上させ、システムのスループットを向上させることができます。
springboot で非同期タスクを開くのも非常に簡単です。
必要な手順は次の 2 つの手順だけです。
を開く@EnableAsync アノテーション。
@Async を追加します。
Future である必要があることに注意してください。ここではマルチスレッド ## で送信されます。 #submit
way タスク、処理結果を取得する方法。 この時点で、非同期タスクの構成と使用は終了です。非同期タスクもマルチスレッド スレッド プール テクノロジを使用します。デフォルトでは、
が実装に使用されます。しかし、自分自身の運命を他人の手に委ねることはできますか?私はいつもそれが現実的ではないと感じています。非同期タスクはどのように実装できますか? カスタム スレッド プールを使用して非同期タスクを実装するにはどうすればよいですか? これは良い質問であり、AsyncConfigurer
という答えがあります。これはインターフェイスです。スレッド プールを取得するには、getAsyncExecutor
メソッドを実装する必要があります。例外情報をキャプチャする必要がある場合は、メソッド getAsyncUncaughtExceptionHandler
を実装します。
非同期タスクの実行結果は次のとおりです。非同期タスクのスレッド プール 設定が有効になりました:
3 スケジュールされたタスクの設定
式に分けることができます 実装ツールに関しては、spring があります
組み込み @Schedule
は、単一のプロジェクトで広く使用されており、他のプラットフォームや追加の構成の助けを必要としません。単純なタスクには十分ですが、分散システムの場合は少し面倒ですこのとき、quartz、elastic-job、xxl-job
が誕生しましたが、その中でも特に優れていたのが xxl-job
でした。ここでは、@Schedule
の使用法のみを紹介します。
アノテーションをグローバルに有効にします。
アノテーションを追加し、固定実行か cron# による実行方法を指定します。 ## 表現。
および実行と同様非同期タスクの場合、スケジュールされたタスクの実行にも独自の非同期タスク スレッド プールがあります。ここで実装する必要があるインターフェイスは SchedulingConfigurer
です。そのconfigureTasks メソッドを実装するだけです:
すべての構成ファイルが完了すると、スケジュールされたタスクのスレッド プール構成が次の実行後に有効になっていることがわかります。
##以上がSpringboot の非同期タスクとスケジュールされたタスクを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。