我有一个要求,我需要为 IBM Publish 操作执行 healthCheck。目前我们正在发布所有消息,没有任何问题。但是,我正在寻找另一种方法来对队列执行某种健康检查,以防有时队列出现故障。 我将能够通知源停止连续发送消息。 是否有任何类型的休息电话,我们可以从 Mule 那里实现这个或任何其他要考虑的解决方法。
看起来你正在尝试为 Mule 4 实现一个 Circuit Breaker 模式。你可以创建一个 Mule 4 模块 来实现这个模式。您也许可以找到一些实现,但据我所知,没有任何官方信息。
您可以在事务中执行发布,然后回滚事务。将 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>