Ice*_*nte 2 java spring spring-batch project-reactor
我们的Spring Web应用程序使用带有Quartz的Spring Batch来执行复杂的工作。这些作业大多数都在事务范围内运行,因为如果复杂系统的一部分发生故障,我们希望回滚以前的任何数据库工作。然后,我们将调查问题,部署修补程序,然后重新启动服务器。
这将成为一个问题,因为其中一些作业需要大量处理,并且可能需要很长时间才能运行。随着执行时间开始超过1小时,我们发现自己无法为其他问题部署生产修复程序,因为我们不想中断一项重要的工作。
我一直在阅读Reactor的实现,以解决我们的问题。我们可以进行少量处理,发布事件,并让其他系统根据需要执行适当的操作。甜!
我唯一的问题是,处理故障的最佳方法是什么?如果我发布事件,并且使用者无法执行某些关键功能,它将在以后重新启动吗?
如果事件已发布,并且在所有监听该事件的所有适当使用者可以正确处理该事件之前,服务器关闭了部署,该怎么办?
我最近才开始使用反应堆,因此可能对此有一些误解,但是我会尽力回答。
Reactor是一个库,可以通过背压支持来帮助您开发非阻塞代码,这可以帮助您扩展应用程序而不会消耗大量资源。
流利的反应堆样式可以轻松替换Spring Batch,但是反应堆本身无法提供处理Spring事务的任何方式,而且如果jdbc当前实现会始终阻塞,因为在驱动级别上不支持非阻止处理。目前仍在讨论如何处理事务,但就此事尚未最终决定。
您可以始终使用事务,但是请记住,您将不会进行非阻塞处理,因为您需要在同一线程中更新/删除/插入/提交或手动将事务上下文传播到新线程并阻塞主线程
因此,我相信Reactor不会帮助您解决性能问题,并且可能会采用其他类似的方法。
我的建议是:
| 归档时间: |
|
| 查看次数: |
963 次 |
| 最近记录: |