基本的なレイアウトが、接続を開き、コンテンツをフェッチしてデータベースに挿入するエージェントを実行するマネージャーであるWebクローラーがあります。
これらのエージェントはそれぞれ、ユーザーが停止信号を送信するまで、ループ内の個別のスレッドで実行されます。これらのエージェントは、マネージャーエージェントからタスクを取得します。
問題は、エージェントで例外が発生した場合、それをインターフェイスにスローできないことです(例外が発生したことを通知するためにオブザーバーを使用しない限り)。
この設計は間違っていると思います。正しいのは、有限のタスクを作成してエグゼキューターに配置することです(URLごとにタスクを作成して、接続を開いたり、コンテンツをフェッチしたり、データベースに挿入したりします)。
私の現在のデザインが間違っていて、レイアウトを変更する必要があるというのは正しいですか?さまざまなエージェントが仕事のさまざまな部分を実行するマルチスレッドで使用する適切なレイアウトは何ですか?