在 Mule 流程中,我想添加一个异常处理程序,当出现异常时将消息转发到“重试队列”。但是,我不希望这个重试逻辑自动运行。相反,我宁愿收到通知,以便查看错误,然后决定是否重试队列中的所有消息。
我不想收到每个异常的通知。我宁愿有一个每 15 分钟运行一次的计划作业,并检查此重试队列中是否有消息,然后仅在有时发送通知。
有什么方法可以确定持久 VM 队列中当前有多少消息?
在 Mule 流程中,我想添加一个异常处理程序,当出现异常时将消息转发到“重试队列”。但是,我不希望这个重试逻辑自动运行。相反,我宁愿收到通知,以便查看错误,然后决定是否重试队列中的所有消息。
我不想收到每个异常的通知。我宁愿有一个每 15 分钟运行一次的计划作业,并检查此重试队列中是否有消息,然后仅在有时发送通知。
有什么方法可以确定持久 VM 队列中当前有多少消息?
假设您使用默认的 VM 队列持久性机制并且 VM 连接器名为vmConnector
,您可以执行以下操作:
final String queueName = "retryQueue";
int messageCount = 0;
final VMConnector vmConnector = (VMConnector) muleContext.getRegistry()
.lookupConnector("vmConnector");
for (final Serializable key : vmConnector.getQueueProfile().getObjectStore().allKeys())
{
final QueueKey queueKey = (QueueKey) key;
if (queueName.equals(queueKey.queueName))
{
messageCount++;
}
}
System.out.printf("Queue %s has %d pending messages%n", queueName, messageCount);