为什么80%的码农都做不了架构师?>>>   

本文主要聊一下jesque的几个dao

dao列表

  • FailureDAO
  • KeysDAO
  • QueueInfoDAO
  • WorkerInfoDAO

FailureDAO

jesque-2.1.0-sources.jar!/net/greghaines/jesque/meta/dao/FailureDAO.java

/*** FailureDAO provides access to job failures.* * @author Greg Haines*/
public interface FailureDAO {/*** @return total number of failures*/long getCount();/*** @param offset offset into the failures* @param count number of failures to return* @return a sub-list of the failures*/List<JobFailure> getFailures(long offset, long count);/*** Clear the list of failures.*/void clear();/*** Re-queue a job for execution.* @param index the index into the failure list* @return the date the job was re-queued*/Date requeue(long index);/*** Remove a failure from the list.* @param index the index of the failure to remove*/void remove(long index);
}

主要操纵的是namespace:failed,是一个list类型

  • count

使用llen方法获取队列长度

  • clear

使用del删除namespace:failed队列

  • getFailures

使用lrange命令查询

  • requeue

根据index取出failed job,重新设定retry时间,放到入队列中

  • remove

根据index删,使用lrem,这里是先lset一个随机值,再根据这个随机值lrem

KeysDAO

jesque-2.1.0-sources.jar!/net/greghaines/jesque/meta/dao/KeysDAO.java

/*** KeysDAO provides access to available keys.* * @author Greg Haines*/
public interface KeysDAO {/*** Get basic key info.* @param key the key name* @return the key information or null if the key did not exist*/KeyInfo getKeyInfo(String key);/*** Get basic key info plus a sub-list of the array value for the key, if applicable.* @param key the key name* @param offset the offset into the array* @param count the number of values to return* @return the key information or null if the key did not exist*/KeyInfo getKeyInfo(String key, int offset, int count);/*** Get basic info on all keys.* @return a list of key informations*/List<KeyInfo> getKeyInfos();/*** @return information about the backing Redis database*/Map<String, String> getRedisInfo();
}
  • getKeyInfo

使用type获取类型

  • getKeyInfos

使用keys *方法

  • getRedisInfo

使用info

QueueInfoDAO

jesque-2.1.0-sources.jar!/net/greghaines/jesque/meta/dao/QueueInfoDAO.java

/*** QueueInfoDAO provides access to the queues in use by Jesque.* * @author Greg Haines*/
public interface QueueInfoDAO {/*** @return the list of queue names*/List<String> getQueueNames();/*** @return total number of jobs pending in all queues*/long getPendingCount();/*** @return total number of jobs processed*/long getProcessedCount();/*** @return the list of queue informations*/List<QueueInfo> getQueueInfos();/*** @param name the queue name* @param jobOffset the offset into the queue* @param jobCount the number of jobs to return* @return the queue information or null if the queue does not exist*/QueueInfo getQueueInfo(String name, long jobOffset, long jobCount);/*** Delete the given queue.* @param name the name of the queue*/void removeQueue(String name);
}
  • getQueueNames

使用smembers方法操作namespace:queues

  • getPendingCount

对每个queue计算大小,分queue类型

private long size(final Jedis jedis, final String queueName) {final String key = key(QUEUE, queueName);final long size;if (JedisUtils.isDelayedQueue(jedis, key)) { // If delayed queue, use ZCARDsize = jedis.zcard(key);} else { // Else, use LLENsize = jedis.llen(key);}return size;}

延时队列使用的是zcard操作SortSet 非延时队列使用llen操作list

  • getProcessedCount

直接查询stat的string对象

  • getQueueInfos

顺带计算每个queue的大小

  • removeQueue
public void removeQueue(final String name) {PoolUtils.doWorkInPoolNicely(this.jedisPool, new PoolWork<Jedis, Void>() {/*** {@inheritDoc}*/@Overridepublic Void doWork(final Jedis jedis) throws Exception {jedis.srem(key(QUEUES), name);jedis.del(key(QUEUE, name));return null;}});}

操作了queues以及queue两个对象

WorkerInfoDAO

jesque-2.1.0-sources.jar!/net/greghaines/jesque/meta/dao/WorkerInfoDAO.java

/*** WorkerInfoDAO provides access to information about workers.* * @author Greg Haines*/
public interface WorkerInfoDAO {/*** @return total number of workers known*/long getWorkerCount();/*** @return number of active workers*/long getActiveWorkerCount();/*** @return number of paused workers*/long getPausedWorkerCount();/*** @return information about all active workers*/List<WorkerInfo> getActiveWorkers();/*** @return information about all paused workers*/List<WorkerInfo> getPausedWorkers();/*** @return information about all workers*/List<WorkerInfo> getAllWorkers();/*** @param workerName the name of the worker* @return information about the given worker or null if that worker does not exist*/WorkerInfo getWorker(String workerName);/*** @return a map of worker informations by hostname*/Map<String, List<WorkerInfo>> getWorkerHostMap();/*** Removes the metadata about a worker.* * @param workerName*            The worker name to remove*/void removeWorker(String workerName);
}
  • getAllWorkers

smembers操作namespace:workers

  • getActiveWorkers

smembers操作namespace:workers,然后过来出来state是working的

  • getPausedWorkers

smembers操作namespace:workers,然后过来出来state是paused的

  • getWorkerCount

直接scard操作namespace:workers

  • getActiveWorkerCount

smembers操作namespace:workers,然后过来出来state是working的

  • getPausedWorkerCount

smembers操作namespace:workers,然后过来出来state是paused的

  • getWorkerHostMap

smembers操作namespace:workers,然后按照host来分map 这个基本是万能的,其他的count基本是这个衍生出来

  • removeWorker
public void removeWorker(final String workerName) {PoolUtils.doWorkInPoolNicely(this.jedisPool, new PoolWork<Jedis, Void>() {/*** {@inheritDoc}*/@Overridepublic Void doWork(final Jedis jedis) throws Exception {jedis.srem(key(WORKERS), workerName);jedis.del(key(WORKER, workerName), key(WORKER, workerName, STARTED), key(STAT, FAILED, workerName), key(STAT, PROCESSED, workerName));return null;}});}

操作works以及其他相关的对象

转载于:https://my.oschina.net/go4it/blog/1575699

聊聊jesque的几个dao相关推荐

  1. 【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程

    CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer ...

  2. 聊聊clean code

    clean code,顾名思义就是整洁的代码,或者说清晰.漂亮的代码,相信大多数工程师都希望自己能写出这样的代码. 也许这是个千人千面的话题,每个工程师都有自己的理解.比如我,从一个天天被骂代码写得烂 ...

  3. 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构

    更新进度(共6节): 源码地址:GitHub·点这里 || GitEE·点这里 章节 文章标题 01 项目技术选型简介,架构图解说明 02 业务架构设计,系统分层管理 03 数据库选型,业务数据设计规 ...

  4. 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你

    01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...

  5. DAO概念板块代币大盘点,你又把握了几个?

    你的认知决定你能够走多远! ​​      大家好我是小哲,你的认知决定你能够走多远,元宇宙的火爆已成定局,下面就来聊聊DAO模块.你又认识多少呢? 火爆的dao大家应该都有听到过DAO这个概念,但是 ...

  6. 章鱼网络 Community Call #1|开启 Octopus DAO 构建

    全长5699字,预计阅读 20 分钟  作者:Louis Liu  撰文:MiX  微信交流:MixMetaverse 北京时间2022年7月4日21点,章鱼网络 Community Call 会议正 ...

  7. 聊聊 Java 的单元测试

    单元测试框架 Java​ 中,​JUnit ​和 ​TestNG ​是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...

  8. 聊聊Java的单元测试

    单元测试框架 Java​ 中,​JUnit ​和 ​TestNG ​是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...

  9. java dao层代码生成器_实际开发中 dao、entity的代码怎样自动生成?一款工具送给你...

    01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...

最新文章

  1. 一文带你了解 FPGA
  2. jQuery元素操作
  3. awx文件解析_Android so(ELF)文件解析
  4. 推荐前端性能优化辅助工具Google LightHouse (灯塔)
  5. C++ 双端队列deque
  6. 【Hadoop】同步集群时间
  7. django 使用新的虚拟环境
  8. extern 关键字详解
  9. 高等数学(第七版)同济大学 总习题一 个人解答
  10. 远程会诊系统加持,长三角(上海)智慧互联网医院有多智慧?
  11. python notebook两个窗口_JupyterNotebook 输出窗口的显示效果调整实现
  12. oop思想php,避免OOP的形式,POP的思想
  13. 100多个免费API接口分享 调用完全不限次数,以后总用得着
  14. 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
  15. Netty实战:Springboot+Netty+protobuf开发高性能服务器 (附源码下载)
  16. ROS学习----Publisher与Subscriber
  17. 西方科学家依然对互联网的进化表示质疑
  18. txt文件英语单词词频统计
  19. React-Native 环境搭建
  20. marvell 开发板Ubuntu镜像制作及配置步骤

热门文章

  1. JavaScript学习笔记—— 4. 变量、作用域和内存问题
  2. Debugging Tools for Windows__from WDK7
  3. 2.8 FSM之Moore和Mealy part3
  4. ie和firefox操作table对象的异同
  5. raspberry pi下使用mp3blaster播放mp3音乐
  6. MySQL导入导出数据和结构
  7. 网页设计和用户界面设计
  8. CQRS体系结构模式实践案例:Tiny Library:领域仓储与事件存储
  9. Centos5上firefox的升级
  10. 数据库服务器 之 PostgreSQL数据库的日常维护工作