Jesque 基础入门
来源:互联网 发布:大数据技术及应用 编辑:程序博客网 时间:2024/06/06 19:20
Jesque是Resque的java实现,它是一个maven项目,依赖Jedis连接到Redis,使用Jackson序列化Job信息,存储在Redis数据库中。主要用于做定时任务。
添加依赖
你可以去官网下载jar包,当然如果你是一个maven项目,像下面这样直接添加依赖即可:
<dependency> <groupId>net.greghaines</groupId> <artifactId>jesque</artifactId> <version>2.0.2</version></dependency>
创建即时任务
final Job job = new Job("TestAction", new Object[]{ 1, 2.3, true, "test", Arrays.asList("inner", 4.5)});client.enqueue("queue", job);
创建定时任务
final Job job = new Job("TestAction", new Object[]{ 1, 2.3, true, "test", Arrays.asList("inner", 4.5)});final long delay = 10; // 秒final long future = System.currentTimeMillis() + (delay * 1000); // job执行时间点,格式:时间戳,单位:毫秒// 10秒后执行jobclient.delayedEnqueue("delayQueue", job, future);
创建循环定时任务
final Job job = new Job("TestAction", new Object[]{ 1, 2.3, true, "test", Arrays.asList("inner", 4.5)});final long delay = 10; // 秒final long future = System.currentTimeMillis() + (delay * 1000); // job执行时间点,格式:时间戳,单位:毫秒final long frequency = 60; // 秒// 10秒后执行job,以后每隔1分钟执行一次client.recurringEnqueue("recurDelayQueue", job, future, (frequency * 1000));
取消定时任务
// 取消redis中名为delayQueue的set集合存放的jobclient.removeDelayedEnqueue("delayQueue", job);client.removeRecurringEnqueue("recurDelayQueue", job);
监听消费者
在这里我只是把worker命令为消费者,仅仅是因为它看起来像是在消费我们创建的Jesque任务而已。
worker.getWorkerEventEmitter().addListener(new WorkerListener(){ public void onEvent(WorkerEvent event, Worker worker, String queue, Job job, Object runner, Object result, Throwable t) { if (runner instanceof TestAction) { // do something } }}, WorkerEvent.JOB_EXECUTE);
我们可以监听到的消费事件,你可以监听这些事件在相应时刻做一些事情:
增加Jedis配置
{ InputStream inputStream = JesqueConfig.class.getResourceAsStream( "/db.properties"); Properties properties = new Properties(); try { properties.load(inputStream); } catch (IOException e) { e.printStackTrace(); } String host = properties.getProperty("redis.host"); String port = properties.getProperty("redis.port"); ConfigBuilder configBuilder = new ConfigBuilder(); if (!StringUtils.isEmpty(host)) { configBuilder.withHost(host); } if (!StringUtils.isEmpty(port)) { configBuilder.withPort(Integer.parseInt(port)); } setRedisConfig(configBuilder.build());}
参考链接:Jesque官网 & 我的一个简单示例
0 0
- Jesque 基础入门
- 基础入门
- 入门基础
- 基础入门
- 【MongoDb入门】基础入门
- OpenCV基础数据结构--基础入门
- Swing入门基础
- OFFICE初学者入门基础
- bash入门基础
- shell入门基础
- Java Swing入门基础
- Linux shell入门基础
- Groovy基础入门
- Hibernate入门 - 基础配置
- Hibernate入门 - 基础配置
- JDBC入门基础篇
- JDBC入门基础篇
- Hibernate入门 - 基础配置
- [python] 向指定套接字发送信息
- Sumdiv(POJ--1845
- 【MongoDB】-用户权限设置详解
- Android程序设计:一个用于同步远程数据库数据异步类AsyncTask
- Integer to Roman
- Jesque 基础入门
- 织梦dedecms时间日期标签大全的方法
- 图像滤波
- PHP函数
- WIN10或WIN8.1系统下MDK“the arm c/c++ compiler 已停止工作”解决办法之一
- POJ -2635-The Embarrassed Cryptographer-数论
- Netty之有效规避内存泄漏
- Java Gossip: Statement、 ResultSet
- 循环询问