0

ユースケースは、サーバーを数千人のユーザーの電子メールアカウントに接続し、Javaで受信メールをスニッフィングすることです。JavaメールとSpring Integration / amqp / rabbit mqタイプのスケーラブルなインフラストラクチャを使用します。imapアイドルタイプの接続と、必要に応じてサーバー処理ノードを追加します。

単一のインバウンドチャネルは、imapアイドルインバウンドアダプタを使用すると簡単です。XMLでいくつかを構成できます。ただし、これらのアダプターの数千の永続的なリスナー/ imapidlechannelアダプターのキューが必要であり、サーバー処理のために新しいユーザー接続を動的に追加する必要がある場合。これは課題になります。また、Javaリスナーが停止したり、サーバーがこれらすべてのリスナーを再起動したり、それらの構成も再起動したり、数千の接続を再構築したり、一部の接続がアイドル受信のすべてのユーザー接続を再構築せずにアイドル受信機能を失った場合に回復したりするという障害の警告も必要です。

たくさん検索されたので歓迎されるアイデアはありますが、何も見つかりませんでしたか?これは、開いている電子メール受信接続に関する重大なスケーラビリティの問題のようです。

4

2 に答える 2

0

IMAP IDLEコマンドを使用してJavaMailを使用して新しいメッセージをリッスンする場合は、メールボックスごとに1つのスレッドが必要になります。これは、スケーラビリティに影響を与える可能性があります。何千もの接続を開いたままにしておくことさえ問題になる可能性があります。

新しいメッセージにどれだけ迅速に対応する必要があるかはわかりません。ほぼリアルタイムの要件がない限り、メールボックスのサブセットを頻繁にポーリングして、最終的にはすべてのメールボックスを循環させる方がよい場合があります。

チェックポインティングやトランザクションなど、アプリケーションに適していると思われるものを使用して、フォールトトレランスの問題に自分で対処する必要があります。

于 2012-05-19T07:12:50.697 に答える
0

もう1つのオプションは、非同期ioを実行するアクターがいるAkkaのようなものを調べることです。JavaMailパッケージを捨てて、imapコマンドを自分で解析する必要がありますが、それを行うにはたくさんのパッケージがあります。あなたがより良い解決策を持っているかどうか聞いてみたいです。

于 2014-03-22T06:15:29.177 に答える