It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center。
7年前关闭。
我正在尝试通过UI进行AJAX调用。这仅应启动异步过程以根据少数条件更新数据库。使用起来好吗?
Spring AsyncTaskExecutor
未来任务
触发
还是有其他更好的方法可以做到这一点?
7年前关闭。
我正在尝试通过UI进行AJAX调用。这仅应启动异步过程以根据少数条件更新数据库。使用起来好吗?
Spring AsyncTaskExecutor
未来任务
触发
还是有其他更好的方法可以做到这一点?
最佳答案
不知道您的要求很难说,但是...:
如果您打算进行扩展,则可以使用以下两种方法之一:
如果数据很重要(例如,您不想删除操作)并且您想要支持其他语言(如Python),则使用持久化事务队列,例如RabbitMQ或Redis。
如果您不关心丢弃操作/消息,则为Akka。
TaskExecutor aka Java ExecutorService的问题在于,它本质上是可变的内存JVM队列(传递给它的可调用/可运行对象可以具有状态并且可以是可变的)。或者说更好的方法是队列中的消息自行运行。
使用ExecutorService,如果您的服务器出现故障并且消息在队列中,您可以说再见。当然,该消息不能与其他进程共享。
另一方面,Akka和RabbitMQ代替了ExecutorService可以提供更好的抽象,并且由于其本质上是基于“事件”的,因此可以更轻松地进行扩展。消息的行为与数据分开。
在不知道您的数据库的情况下,我只能猜测“触发”将是一个坏主意。
我认为这是一个重要的问题,因为如果您到处都在做错(将行为和状态结合起来进行异步操作),则很难进行切换。