我们目前有一个本地集群环境,我们目前有 2 个节点集群。我们正在使用 Mule 3.8.2 运行时。我们知道,quartz 不是集群感知的,在谷歌搜索之后,我们发现如果我们在集群中部署石英,它将同时从两个节点触发。所以为此我们需要在quartz中配置JDBC Job Store
为了测试它,我在集群中部署了以下 Mule 流程,没有任何作业存储:
<quartz:connector name="QuartzConn" validateConnections="true" doc:name="Quartz">
<receiver-threading-profile maxThreadsActive="1"/>
</quartz:connector>
<flow name="TestFlow" processingStrategy="synchronous">
<quartz:inbound-endpoint name="connectorname" jobName="testjob" repeatInterval="10000"
responseTimeout="10000" doc:name="QuartzConn" connector-ref="QuartzConn">
<quartz:event-generator-job>
<quartz:payload>This is a test payload</quartz:payload>
</quartz:event-generator-job>
</quartz:inbound-endpoint>
<logger message="Server Name:- #[server.ip+'\n'] This is a message #[function:now]" level="INFO" doc:name="Logger"/>
<file:outbound-endpoint path="E:\test" outputPattern="#[server.dateTime.format('YYYY-MM-dd-hh-mm-ss.sss')].txt" responseTimeout="10000" doc:name="File"/>
</flow>
但令我惊讶的是,我发现,当前只有一个节点正在执行石英,文件被写入带有时间戳的目标文件夹中,而其他节点则在静默等待,什么也不做!!!
Node1 正在写入所有文件:
当 Node2 静静地等待和观察时:
(附图片)
因此,为了进一步测试,我关闭了 Node1,发现 Node2 开始选择任务并正在写入文件。
请节点这是一个简单的石英应用程序,没有配置任何 jdbc 作业存储。那么,我该如何解释这个动作呢?两个节点都配置了 mmc 并且性能良好。
如果有人可以更详细地解释簇中的石英,那将会很有帮助。
谢谢