Jesque(Resque):在redis db中获取所有打开的延迟作业

时间:2015-01-08 07:59:06

标签: java redis resque jesque

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?

1 个答案:

答案 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。