如何测量消息在RabbitMQ中到达消息队列所需的时间?

时间:2011-09-15 20:19:22

标签: java time quartz-scheduler rabbitmq

我有一个生产者类,它将消息发送到消息代理RabbitMQ。 我正在使用Quartz调度程序定期发送消息。

我想测量单个作业执行/完成所需的时间。 我该怎么做呢?

我想找一份工作在一段时间内完成所需的平均时间。所以我想衡量每个人的时间,然后找出平均值。

1 个答案:

答案 0 :(得分:0)

我过去采用的方法是创建一个作业日志记录队列,该队列采用作业名称,开始时间,结束时间和每个作业完成后的简单数据结构,发送包含该信息的消息到作业记录队列。

然后,只需编写一个侦听器,将数据从作业日志记录队列中提取出来,然后将其写入数据库,更新内部存储器结构以进行报告,发送电子邮件等。这一切都假设您有权更改正在执行作业的代码。

如果您无法访问这些工作,那就更难了。 RabbitMQ有一个插件API,因此您可以构建一个插件来计算每个特定作业所需的时间。 rabbitmq management plugin会为您提供粗粒度指标,例如传递的消息数/秒或已确认/秒。确认通常表示任务已完成,但根据代码的构建方式,可以在完成之前确认作业,在这种情况下,您唯一的选择是更改执行作业的代码。