如何在 Mule 中对 IBM Publish 操作执行健康检查

问题描述 投票:0回答:2

我有一个要求,我需要为 IBM Publish 操作执行 healthCheck。目前我们正在发布所有消息,没有任何问题。但是,我正在寻找另一种方法来对队列执行某种健康检查,以防有时队列出现故障。 我将能够通知源停止连续发送消息。 是否有任何类型的休息电话,我们可以从 Mule 那里实现这个或任何其他要考虑的解决方法。

mule ibm-mq dataweave mulesoft
2个回答
0
投票

看起来你正在尝试为 Mule 4 实现一个 Circuit Breaker 模式。你可以创建一个 Mule 4 模块 来实现这个模式。您也许可以找到一些实现,但据我所知,没有任何官方信息。


0
投票

您可以在事务中执行发布,然后回滚事务。将 Try 范围与

transactionalAction="ALWAYS_BEGIN"
一起使用,然后引发魔法错误以使其回滚。这样消息实际上对队列或主题的消费者不可用。

这是一种方法:

    <flow name="healthcheckFlow">
        <try doc:name="Outside try to capture the error after the transaction is rolled back">
            <try doc:name="Inside try to provide the transaction" transactionalAction="ALWAYS_BEGIN">
              <ibm-mq:publish config-ref="IBM_MQ_Config" destination="importantQueue"/>
                <raise-error type="APP:ROLLBACK" description="this error is only raised to cause the transaction to roll back" />
                <error-handler>
                    <on-error-propagate logException="false" type="APP:ROLLBACK">
                        <logger level="DEBUG" message="Health check successful, rolling back transaction" category="example"/>
                    </on-error-propagate>
                </error-handler>
            </try>
            <error-handler >
                <on-error-continue logException="false" type="APP:ROLLBACK"/>
            </error-handler>
        </try>
        <logger level="INFO" message="Health check OK" category="example"/>
    </flow>
© www.soinside.com 2019 - 2024. All rights reserved.