Quartz在无JobStore的Mule集群中的应用

Quartz在无JobStore的Mule集群中的应用,mule,mule-cluster,quartz,Mule,Mule Cluster,Quartz,我们目前有一个本地集群环境,其中我们目前有2个节点集群。我们正在使用Mule 3.8.2运行时。 我们知道quartz不支持集群,在google搜索之后,我们发现如果我们在集群中部署quartz,它将同时从两个节点触发。因此,我们需要在quartz中配置JDBC作业存储 为了测试它,我在集群中部署了以下Mule流,但没有任何作业存储: 这是一个测试有效载荷 但令我惊讶的是,我发现,目前只有一个节点正在执行quartz,并且该文件以时间戳写入目标文件夹中,而另一个节点在静默等待,什么也没做 N

我们目前有一个本地集群环境,其中我们目前有2个节点集群。我们正在使用Mule 3.8.2运行时。 我们知道quartz不支持集群,在google搜索之后,我们发现如果我们在集群中部署quartz,它将同时从两个节点触发。因此,我们需要在quartz中配置JDBC作业存储

为了测试它,我在集群中部署了以下Mule流,但没有任何作业存储:


这是一个测试有效载荷
但令我惊讶的是,我发现,目前只有一个节点正在执行quartz,并且该文件以时间戳写入目标文件夹中,而另一个节点在静默等待,什么也没做

Node1正在写入所有文件:

而Node2则静静地等待和观察:

(附图片)

因此,为了进一步测试,我关闭了Node1,发现Node2开始选择任务并编写文件

这是一个简单的quartz应用程序,没有配置任何jdbc作业存储。那么,我该如何解释这种行为呢?这两个节点都配置了mmc,性能良好

如果有人能更详细地解释集群中的石英,那将是有帮助的


如果您想尝试一下它的优点,但使用Mule cluster,您不需要添加石英,而是使用石英。Mule集群的出现可能使quartz集群不需要JDBC作业存储。但是,在非集群Mule设置中(我们有2个非集群节点),带JDBC作业存储的Quartz集群是唯一的选项

穆勒斯福特玩得很聪明。他们添加了轮询范围,这很好,但在至少有2个节点的典型生产环境中,您只需要轮询一个节点。这只有在您购买Mule的集群High Availability(高可用性)时才可能实现,但该集群仅以白金订阅(而非黄金)形式提供。因此,Mulesoft间接地迫使客户购买或升级白金订阅,以从同一产品中获得更多利润。

“我不想使用poll,因为我需要知道它工作的原因”……这是您的选择,但Mule明确指出,在集群环境中,轮询范围是首选的


而在非集群环境中,您可以使用Quartz和JDBC jobstore来实现相同的功能,尽管有点复杂。说明和

在您的案例中,两个节点都处于活动状态?或者节点1处于活动状态,而节点2处于静默状态?。只有在节点1发生灾难时,节点2才会处于活动状态,对吗?根据这里的Mule文档:-Mule使用主动-主动模型来集群Mule运行时,而不是主动-被动模型。在主动-主动模型中,集群中没有一个节点充当主节点;群集中的所有节点都支持该应用程序。因此,为了在集群中支持Quartz,建议使用JDBCJobStore,它将Quartz实例锁定为不支持集群的Quartz…我指的是以下线程:-但现在让我惊讶的是,我发现它在没有JDBCJobstore的情况下运行是正确的。您可以通过任何一种方式实现集群环境的外观,这取决于架构师根据您的需求做出的决定。我想问的是,您的集群环境实现模式是“主动-主动”还是“主动-被动模式”?。请确认。我使用mmc创建了群集,并使用mmc部署。有没有办法确定该模式是“主动-主动”模式还是“主动-被动”模式?事实并非如此。。Quartz不支持群集,因此无法启用Quartz群集。。其次,我不想使用poll,因为我需要知道它工作的原因,因为Mule声称两个节点都是“活动的”。。所以我需要知道我在这里遗漏了什么,或者Mule用quartz做了什么,让它知道我在任何地方都找不到的群集document@KalyanKundu,当您在集群环境中运行Mule时,与传输(如文件、FTP和JDBC)一起使用的所有非分布式存储—这些存储一次由单个节点读取。默认情况下,quartz使用内存jobstore,所有集群Mule实例共享内存。这也许可以解释你的情况。但是,Mule文件中没有此类参考。我建议通过Mule支持进行确认。