Java 使用SpringAsyncTaskExecutor更新DB好吗?
我正在尝试从UI进行AJAX调用。这应该只是启动一个异步进程,根据几个条件更新数据库。使用它是否好:Java 使用SpringAsyncTaskExecutor更新DB好吗?,java,spring,asynchronous,Java,Spring,Asynchronous,我正在尝试从UI进行AJAX调用。这应该只是启动一个异步进程,根据几个条件更新数据库。使用它是否好: Spring异步任务执行器 未来任务 触发 或者还有其他更好的方法吗 不知道您的要求很难说,但是 如果您计划扩展,我将使用以下任一方法: 如果数据很重要(即您不想删除操作),并且您想支持Python等其他语言,则可以使用持久事务队列,如RabbitMQ或Redis 或者Akka,如果您不在乎删除操作/消息 TaskExecutor又名Java ExecutorService的问题在于它本质上
或者还有其他更好的方法吗 不知道您的要求很难说,但是 如果您计划扩展,我将使用以下任一方法:
- 如果数据很重要(即您不想删除操作),并且您想支持Python等其他语言,则可以使用持久事务队列,如RabbitMQ或Redis
- 或者Akka,如果您不在乎删除操作/消息
我认为这是一个重要的问题,因为如果你在所有地方都犯了错误(将异步的行为和状态结合起来),那么很难进行切换。在不了解你的需求的情况下很难判断,但是 如果您计划扩展,我将使用以下任一方法:
- 如果数据很重要(即您不想删除操作),并且您想支持Python等其他语言,则可以使用持久事务队列,如RabbitMQ或Redis
- 或者Akka,如果您不在乎删除操作/消息
我认为这是一个重要的问题,因为如果你在所有地方都犯了错误(将异步的行为和状态结合起来),那么很难进行切换。为什么?队列的伸缩性比简单的java executor服务要好得多。问题是异步写入数据库。用户目前可能没有豪华或infra来使用队列。它们确实很棒,但考虑到环境,这是否可行,因此它们也需要一些工作量。为什么?队列的伸缩性比简单的java executor服务要好得多。问题是异步写入数据库。用户目前可能没有豪华或infra来使用队列。它们确实很棒,但考虑到具体情况,这是可行的,因此它们也需要一些工作?也,您希望该进程运行多长时间?应该修改该问题并重新打开IMHO,因为这是一个很好的问题,即在不阻塞给定用户界面的情况下更新数据库的一些实现选择是什么。Tomcat上的@PhilippeMarschall,该进程只需不到一分钟。@Daemonthread是的,但有5000个用户这样做一次最多只能在内存队列中包含5000个对象。。。更糟糕的情况是,有5000个线程试图同时运行。在我自己的web应用开发体验(IMHO)中。。。如果花费的时间超过几秒钟,我会将其推送到外部队列。@AdamGent您有设置RabbitMQ的链接吗?它是否作为一个单独的实例运行(只是为了检查AWS上的价格)?您使用的是哪台Java服务器?也,您希望该进程运行多长时间?应该修改该问题并重新打开IMHO,因为这是一个很好的问题,即在不阻塞给定用户界面的情况下更新数据库的一些实现选择是什么。Tomcat上的@PhilippeMarschall,该进程只需不到一分钟。@Daemonthread是的,但有5000个用户这样做一次最多只能在内存队列中包含5000个对象。。。更糟糕的情况是,有5000个线程试图同时运行。在我自己的web应用开发体验(IMHO)中。。。如果花费的时间超过几秒钟,我会将其推送到外部队列。@AdamGent您有设置RabbitMQ的链接吗?它是否作为一个单独的实例运行(只是为了检查AWS上的价格)?