他の人がどのようにメーリングを行っているのか、ベスト プラクティスについてどのように考えているのか疑問に思っていました。メーリングをどのように行うことができるかを考えるとき、さまざまなテクノロジでさまざまな方法で実現できるソリューションは 1 つしか思い浮かびません。
- メールを何らかの方法で永続化する (DB に保存し、JMS 経由で送信する)
- まだ正常に送信されていない新しいメールがないか (スケジューラーを使用して DB または JMS 経由で取得) を継続的にチェックし、エラーが発生した場合は後で再試行します。
本当に正当な理由なしに誰も使用しないことを願っているもう 1 つのオプションは、ビジネス ロジック内でメールを送信することであり、トランザクションが失敗する可能性があります (または、特定の時間セットでメールの送信を再試行すると非常に時間がかかります)。メールを送信できませんでした。
別のプロジェクトで、DB に継続的にクエリを実行し、現在の時刻などの基準に基づいてメールを送信するスタンドアロンのメール送信アプリを見てきました。
では、何が良い解決策だと思いますか、それともプロジェクトで実際に何を使用していますか? グーグルでその実例を見つけることができませんでした。おそらく十分に検索していませんでしたが、もしそうなら、あなたのリソースを私と共有してください!
編集 「正しい方法」を定義するために、いくつかの要件を追加したいと思います。
- メールは永続的で、編集可能で、再送信可能である必要があります
- いくつかの基準に基づいて、特定の時間にメールを送信できます
- ソリューションは水平方向にスケーリングする必要があります
EE6 は、TimerService と Async オペレーションを備えた EJB を提供します。EE6環境の「正しい方法」を尋ねることで、そのような標準要件に対してメーリングがどのように使用/実装されることになっているのかを知りたい.
オラクルのサイトには、@Async EJB メソッドでのメール セッションの使用法を示す記事がいくつかありますが、その使用法はどこか間違っているように思えます。タイマーサービスを利用してメールの再送信を行うべきですか? メールを DB に保持し、インターバル タイマーを使用してフェッチして送信する必要がありますか? メールの送信をアプリの外に移動する必要がありますか?
他の人がどのソリューションを使用しているかを知り、そのような(できれば私だけではない)一般的な要件に対するより良いまたは悪いソリューションについての意見を聞きたいです。