1

UIからAJAX呼び出しを行おうとしています。これは、いくつかの条件に基づいてDBを更新するための非同期プロセスを開始するだけです。使用するのは良いですか:

  1. Spring AsyncTaskExecutor
  2. FutureTask
  3. 引き金

または、これを行う他のより良い方法はありますか?

4

1 に答える 1

1

あなたの要件を知らなければ、それを伝えるのは難しいですが...:

スケーリングを計画している場合は、次のいずれかを使用します。

  • データが重要で (つまり、アクションをドロップしたくない)、Python などの他の言語をサポートしたい場合は、RabbitMQRedisなどの永続的なトランザクション キュー。
  • または、アクション/メッセージのドロップを気にしない場合はAkka 。

TaskExecutor 別名 Java ExecutorService の問題は、本質的にメモリ内の JVM キューが可変であることです (それに渡された呼び出し可能/実行可能は状態を持つことができ、可変にすることができます)。または、それを置くより良い方法は、キュー内のメッセージ自体を実行することです。

ExecutorService を使用すると、サーバーがダウンしてメッセージがキューに入っている場合に、メッセージにさようならを言うことができます。もちろん、メッセージを他のプロセスと共有することはできません。

一方、ExecutorService の代わりにAkkaRabbitMQを使用すると、本質的に「イベント」ベースであるため、より優れた抽象化が提供され、スケーリングが容易になります。メッセージの動作はデータから分離されています。

あなたのDBを知らなければ、「トリガー」は悪い考えだとしか思えません。

これは重要な質問だと思います。なぜなら、これをあらゆる場所で (非同期の動作と状態を組み合わせて) 間違った方法で行うと、切り替えが非常に困難になる可能性があるからです。

于 2012-09-24T01:02:27.957 に答える