小编Mos*_*Pit的帖子

Quartz Job Scheduler - 多租户设置

由于我还没有找到任何与这相关的东西可以给我带来灵感,所以我想我会在这里提出这个。

我最近对​​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 上(实际上是集群和负载平衡的)?或者是否有其他产品/框架/库支持开箱即用的多租户?

非常感谢任何领导、想法或帮助!

tomcat quartz-scheduler multi-tenant mariadb jakarta-ee

5
推荐指数
1
解决办法
4502
查看次数

JAVA和Joda Time API:比较间隔,检测重叠并生成新的间隔

我正在制作一个令我困惑的项目.

给定是List<TimeInterval> list包含类的元素,TimeInterval如下所示:

public class TimeInterval {
    private static final Instant CONSTANT = new Instant(0);
    private final LocalDate validFrom;
    private final LocalDate validTo;


    public TimeInterval(LocalDate validFrom, LocalDate validTo) {
        this.validFrom = validFrom;
        this.validTo = validTo;
    }


    public boolean isValid() {
        try {
            return toInterval() != null;
        }
        catch (IllegalArgumentException e) {
            return false;
        }
    }


    public boolean overlapsWith(TimeInterval timeInterval) {
        return this.toInterval().overlaps(timeInterval.toInterval());
    }


    private Interval toInterval() throws IllegalArgumentException {
        return new Interval(validFrom.toDateTime(CONSTANT), validTo.toDateTime(CONSTANT));
    }
Run Code Online (Sandbox Code Playgroud)

使用以下内容生成间隔:

TimeInterval …
Run Code Online (Sandbox Code Playgroud)

java range overlap jodatime intersect

4
推荐指数
2
解决办法
5444
查看次数