查询Mule ESB VM队列中的消息数

时间:2012-09-04 15:13:00

标签: mule

在Mule流程中,我想添加一个异常处理程序,当出现异常时,它会将消息转发到“重试队列”。但是,我不希望此重试逻辑自动运行。相反,我宁愿收到通知,以便我可以查看错误,然后决定是否重试队列中的所有消息。

我不希望收到每个例外的通知。我宁愿有一个每15分钟运行一次的预定作业,并检查此重试队列中是否有消息,然后只发送通知。

有没有办法确定持久VM队列中当前有多少消息?

1 个答案:

答案 0 :(得分:1)

假设您使用默认的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);