目次
問題の説明:
インターフェイスを作成しているときに、フロントエンドが他のコードを実行する前に結果を直接返す必要があるという問題が発生しました。
問題分析:
予算が限られているため、今回は NetEase を使用してメールを送信する、つまり自分のアカウントを使用して他の人にメールを送信しましたが、一度に大量のメール メッセージを送信することができないといういくつかの問題もあります。時間が短いので、タイマー装置を追加しました。
制限は 30 分に 1 回の送信です。バックグラウンドがフロントエンドによって送信された配列を受信するとき、配列内のデータは 30 分に 1 回しか実行できません。つまり、複数の人に送信される電子メールは、 30分後に次の人に送信されます。
したがって、これには問題が発生します。インターフェイスから返される結果を取得するには、これらのタイマーの実行が完了するまで待つ必要があります。
また、これによりブロック待機が発生し、時間がかかります。
問題が解決しました:
非同期の成功した解決を追加します。つまり、メイン プロセスが結果を直接返し、他のプロセスが時間のかかるプロセスを実行します。
実装:
1. アノテーション @EnableAsync をスタートアップ クラスに追加します。
2. サービス層のメソッドに @Async アノテーションを追加します。
3. コントローラー層でこのメソッドを通常どおり呼び出すだけです。
分析の概要:
@Async アノテーションをクラスに追加して、クラス内のすべてのメソッドが非同期で実行されることを示すことも、メソッドに追加してメソッドが非同期で実行されることを示すこともできます。