Mule集群配置问题

Mule cluster configuration issue

我有一个 mule 集群,在不同的机器上有 2 个节点 运行,集群是通过带有 tomcat 的 mmc 配置的。当我在 mmc 集群中部署应用程序时,应用程序正在部署 2 个节点。我有 quartz 调度程序,每晚运行一次。

<quartz:connector name="Quartz" validateConnections="true" doc:name="Quartz">
        <quartz:factory-property key="org.quartz.scheduler.instanceName" value="my-app1"/>
</quartz:connector>

<quartz:inbound-endpoint jobName="Fetch" repeatInterval="0" repeatCount="0" responseTimeout="10000" doc:name="Quartz" startDelay="0" cronExpression="${cronExpression}" connector-ref="Quartz">
            <quartz:event-generator-job/>
</quartz:inbound-endpoint>

现在,当应用程序在晚上 11 点开始时,应用程序在两个节点中都是 运行。这会导致处理记录重复,即在 2 台机器上处理相同的应用程序。 Mule 集群是 HA-Active-Active 模式,我需要的是在任何给定时间只有一个节点应该处理,如果负载很大,那么其他服务器应该处理它,即使一台服务器发生故障也应该接起另一台服务器 运行。调度程序不这样做,而是在两个应用程序中并行运行。如何避免这种情况。

如果事情没有解决,你可以有一个临时的解决方法,其中只有 quarts 端点的流,然后是一个 JSM 队列,它将向两个节点发送几乎平衡的消息。

这里的quarts和JMS组合应该只部署在一台服务器上。

在一个集群中,只应触发一个 Quartz 入站端点。如果没有发生这种情况,请向我们的支持团队提交支持案例。关于在高负载下分发消息,您应该在 quartz 入站端点之后放置一个 vm 出站端点,并将其余流逻辑放在不同的流中,以在 vm 入站端点中侦听这些消息。