spring - Spring task:scheduled 或 @Scheduler 限制作业在多个实例中运行
问题描述
我有一项@Scheduler
工作在集群环境中的多台服务器上运行。但是,我想将作业限制为仅在一台服务器中运行,并且一旦任何其他服务器启动它,其他服务器不应运行相同的作业。
我已经探索了 Spring Batch 使用一些数据库表的锁定机制,但只在 spring 中寻找任何解决方案task:scheduler
。
解决方案
我遇到了同样的问题,我实现的解决方案是带有 Hazelcast 的 Lock 机制,为了使其易于使用,我还为此添加了适当的注释和一些 spring AOP。因此,通过这个技巧,我能够通过单个注释在集群上强制执行单个计划。
推荐阅读
- javascript - Angular-slickgrid 不显示自定义标题菜单项文本(仅标题菜单项图标可见)
- python - 如何访问@declared_attr 底层的函数?
- spring - Spring/Springboot 中的 @RequestBody 注解
- android - 应用内更新 - startUpdateFlowForResult 未触发更新对话框
- user-interface - 如何为 MFC 功能区创建新的视觉样式?
- java - Swagger 根据枚举值生成子类型
- reactjs - 在 React Hooks 项目中应用所见即所得草案
- laravel - Laravel:在排队通知内调用的路由中更改应用程序 url
- javascript - React - 组件中的折射状态
- javascript - React Redux 不调度动作