Mos*_*Pit 5 tomcat quartz-scheduler multi-tenant mariadb jakarta-ee
由于我还没有找到任何与这相关的东西可以给我带来灵感,所以我想我会在这里提出这个。
我最近对Quartz Job Scheduler做了很多工作,我已经在 RESTful Java Servlet 中实现了它,该 Servlet 应该提供基于 Sencha ExtJS 的 UI 用于创建作业。我们将 Authenticator 类与 DatabaseManager 结合使用,负责验证用户和所有其他特定于数据库的内容(使用 Hibernate)。
由于我们希望在我们开发的 Java 企业应用程序中使用它,因此我们需要为每个客户运行这个东西。我们还需要使用 JobStoreTX 在 MySQL 数据库上持久化数据(显然是为了集群),因此易失性 RAMJobStore 实现是一个禁忌。我知道官方文档并且 Quartz 本身似乎不支持多租户实现(请参阅Quartz Clustering)。
我们的设置看起来有点像这样(简化):
- 1+ 生产 Tomcat(提供应用程序逻辑)
- 1+ 生产 Apache(提供 ExtJS 前端和静态内容)
- n 个数据库(每个客户一个)
要添加更棘手的事情:
我们有特定于客户的遗留模块(每个客户都有自己的应用程序托管),而更多最新模块则通过与客户相关的访问进行集中托管。
在我看来,在每个客户数据库上创建 Quartz 相关的表是不够的,因为我们希望坚持简单、直接的设置(这意味着每个客户使用相同的表前缀等)只是为了避免复杂化在整个农场部署石英。
我已经考虑过将它与MariaDB MaxScale结合起来,并使用过滤器基于 RegEx 或类似的东西将 Quartz 路由到每个客户数据库,Quartz 只与 MaxScale 代理通信,但这对于我试图实现的目标来说似乎有点太多的开销我什至不确定这是否有效。
有什么东西可以让我使用 Quartz 进行多租户吗?您能否建议一种方法,使 Quartz 能够处理这个问题,因为我们需要为每个客户运行作业,但在“一个”Tomcat 上(实际上是集群和负载平衡的)?或者是否有其他产品/框架/库支持开箱即用的多租户?
非常感谢任何领导、想法或帮助!
我终于让它写入多个数据库。
我所做的是根据各自的客户参数即时为每个客户生成 Quartz 属性文件,并使程序逻辑读取这个新生成的文件。最后,每个客户都有自己的 Quartz 作业存储在自己的数据库中。
| 归档时间: |
|
| 查看次数: |
4502 次 |
| 最近记录: |