Jesque是我想要使用的好工具。
Jesque是Resque in Java的一个实现。它可以与Ruby和Node.js(Coffee-Resque)实现完全互操作。
Jesque是一个Maven项目,依靠Jedis连接到Redis, 杰克逊要与JSON和SLF4J进行映射以进行记录。
但之前,我还需要更多信息。是否也可以检索Jesque中的所有空缺职位?这个信息可能对我的monitioring和脏重启很有用。在脏关机之后,如果任何其他应用程序已经完成相同的工作或队列,则检查所有剩余的作业与其他分布式应用程序是有用的。这可能吗?我想避免,工作完成两次或更多,因为在loadbalancer后面可能有几个应用程序,如果原始客户端没有OK或FAIL反馈,他再次尝试,所以有可能,有几个相同的工作在几个单一的应用程序(loadbalancer !!!)。
我使用Java也许也可以使用另一个redis数据库客户端工具来查看REDIS数据库。如果没有机会用jesque做这个,这将是我的第二个选择。有谁知道一个好的redis数据库客户端用于Java?
答案 0 :(得分:0)
我终于找到了它应该工作的方式,我想在这里记录它。 QueueInfoDAORedisImpl实现了“QueueInfoDAO”接口。
this.jedisPool = new JedisPool(jesqueConfig.getHost());
this.queueInfoDAORedisImpl = new net.greghaines.jesque.meta.dao.impl.QueueInfoDAORedisImpl(jesqueConfig, jedisPool);
List<QueueInfo> queueInfos = queueInfoDAORedisImpl.getQueueInfos();
for (QueueInfo queueInfo : queueInfos) {
//here are some QueueInfos like name or size
for (Job queuedJob : queueInfo.getJobs()) {
//read jobs arg,vars or do what you want
}
}
唯一的问题是,queueInfo.getJobs()返回null。有人知道为什么吗?似乎从未调用DAO setJob(),因此此var保持为null。