聊聊jesque的几个dao
为什么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相关推荐
- 【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程
CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer ...
- 聊聊clean code
clean code,顾名思义就是整洁的代码,或者说清晰.漂亮的代码,相信大多数工程师都希望自己能写出这样的代码. 也许这是个千人千面的话题,每个工程师都有自己的理解.比如我,从一个天天被骂代码写得烂 ...
- 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构
更新进度(共6节): 源码地址:GitHub·点这里 || GitEE·点这里 章节 文章标题 01 项目技术选型简介,架构图解说明 02 业务架构设计,系统分层管理 03 数据库选型,业务数据设计规 ...
- 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
- DAO概念板块代币大盘点,你又把握了几个?
你的认知决定你能够走多远! 大家好我是小哲,你的认知决定你能够走多远,元宇宙的火爆已成定局,下面就来聊聊DAO模块.你又认识多少呢? 火爆的dao大家应该都有听到过DAO这个概念,但是 ...
- 章鱼网络 Community Call #1|开启 Octopus DAO 构建
全长5699字,预计阅读 20 分钟 作者:Louis Liu 撰文:MiX 微信交流:MixMetaverse 北京时间2022年7月4日21点,章鱼网络 Community Call 会议正 ...
- 聊聊 Java 的单元测试
单元测试框架 Java 中,JUnit 和 TestNG 是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...
- 聊聊Java的单元测试
单元测试框架 Java 中,JUnit 和 TestNG 是最受欢迎的单元测试框架. JUnit TestNG JUnit 首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应 ...
- java dao层代码生成器_实际开发中 dao、entity的代码怎样自动生成?一款工具送给你...
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
最新文章
- 一文带你了解 FPGA
- jQuery元素操作
- awx文件解析_Android so(ELF)文件解析
- 推荐前端性能优化辅助工具Google LightHouse (灯塔)
- C++ 双端队列deque
- 【Hadoop】同步集群时间
- django 使用新的虚拟环境
- extern 关键字详解
- 高等数学(第七版)同济大学 总习题一 个人解答
- 远程会诊系统加持,长三角(上海)智慧互联网医院有多智慧?
- python notebook两个窗口_JupyterNotebook 输出窗口的显示效果调整实现
- oop思想php,避免OOP的形式,POP的思想
- 100多个免费API接口分享 调用完全不限次数,以后总用得着
- 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
- Netty实战:Springboot+Netty+protobuf开发高性能服务器 (附源码下载)
- ROS学习----Publisher与Subscriber
- 西方科学家依然对互联网的进化表示质疑
- txt文件英语单词词频统计
- React-Native 环境搭建
- marvell 开发板Ubuntu镜像制作及配置步骤