我使用 Quartz 定期创建一堆作业,我将这些作业发送到一个队列 (RabbitMQ),在那里它们被 Akka actor 拾取并执行。缺少的一件是工作监控。如果一项工作失败,我什至不会注意到。
作业相当简单:它们只有 1-2 个参数并且没有依赖关系。
有什么(库、最佳实践等)我可以为此利用(即使是 SQL 模式也是一个好的开始)吗?
PS:我已经考虑过 Spring-Batch,它似乎开销太大。
最佳答案
我认为您会找到监视 JMS 的工具。典型的一种是与 JMS 供应商捆绑在一起。 JMS 的一个有趣特性是它可以检测消息处理失败并将消息发送给另一个消费者。
假设您采用 JMS 监控路线,您需要: - 使您的 Akka actor 同步,以便 JMS 消息在处理失败或成功之前等待它响应。 - 记录无法发送 JMS 消息的 Quartz 作业失败。
另一种解决方案是完全同步并让 Quartz 消息管理日志记录(可能在基类或代理中),因此您需要做的监控就是读取日志文件。
据我了解,Akka Actor 监控还没有出现,但已经在计划中了。同时,您可以从这里开始:http://groups.google.com/group/akka-user/browse_thread/thread/3818fb17bef95869
关于Java分布式作业监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008323/