Framework ’ 目录归档

Quartz教程五:SimpleTrigger

原文链接 | 译文链接 | 翻译:nkcoder

本系列教程由quartz-2.2.x官方文档翻译、整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正;有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中)

SimpleTrigger可以满足的调度需求是:在具体的时间点执行一次,或者在具体的时间点执行,并且以指定的间隔重复执行若干次。比如,你有一个trigger,你可以设置它在2015年1月13日的上午11:23:54准时触发,或者在这个时间点触发,并且每隔2秒触发一次,一共重复5次。

根据描述,你可能已经发现了,SimpleTrigger的属性包括:开始时间、结束时间、重复次数以及重复的间隔。这些属性的含义与你所期望的是一致的,只是关于结束时间有一些地方需要注意。

重复次数,可以是0、正整数,以及常量SimpleTrigger.REPEAT_INDEFINITELY。重复的间隔,必须是0,或者long型的正数,表示毫秒。注意,如果重复间隔为0,trigger将会以重复次数并发执行(或者以scheduler可以处理的近似并发数)。

阅读全文

Akka与Java内存模型的关系

原文链接:http://doc.akka.io/docs/akka/2.3.6/general/jmm.html   译者:clearity

不管你使用的Typesafe系统是Scala版本还是Java版本,都可以使你编写并发程序的过程变得更加容易。这篇文章主要讨论的是Typesafe系统,特别是针对Akka在并发程序中对共享内存的处理部分。

Java内存模型

在之前的Java 5 版本中,Java内存模型的定义是很值得商榷的。以至于在共享内存环境下的多线程处理的结果变得多种多样,比如:

  1. 线程读取不到其他线程写入的值:内存可见性问题
  2. 线程得到了其他线程的“非正常”行为,这也是因为底层指令没有按照期望的顺序执行的结果:指令重排序问题

阅读全文

AKKA文档(java版)—位置透明性

原文:http://doc.akka.io/docs/akka/2.3.6/general/remoting.html  译者:小鱼

2.6 位置透明性

前一章节描述了如何使用角色路径来实现位置透明性。这一个特性应该需要一些额外的说明,因为与之关联的术语“transparent remoting”(透明的远程处理)在编程语言、平台和技术中的用法是不一样的。 阅读全文

Quartz教程四:Trigger

原文链接 | 译文链接 | 翻译:nkcoder

本系列教程由quartz-2.2.x官方文档翻译、整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正;有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中)

与job一样,trigger也很容易使用,但是还有一些扩展选项需要理解,以便更好地使用quartz。trigger也有很多类型,可以根据实际需要来选择。

最常用的两种trigger会分别在教程五:SimpleTrigger教程六:CronTrigger中讲到;

阅读全文

AKKA文档(java版)—什么是角色

原文: http://doc.akka.io/docs/akka/2.3.5/general/actors.html 译者:Vitas
2.3 什么是角色?
前面角色系统一节介绍了一群角色如何形成一个层次结构,并且介绍了角色是构建应用程序的最小单位。本节我们将角色拿出来单独介绍,解释一些你在使用它的过程中可能遇到的概念。对于一些更深入的细节,将会在后面的章节中详细介绍。
你可以将角色想象成一个容器,它其中包括状态,行为,一个信箱,子角色以及一个监管策略。所有这些都封装在一个角色引用中。本节的最后介绍一个角色什么时候终结。

阅读全文

Akka文档(java版)-为什么选择Akka

原文: http://doc.akka.io/docs/akka/2.3.6/intro/why-akka.html 译者:Vitas Wang

1.2 为什么选择Akka?

1.2.1 与同类其它产品相比,Akka平台有什么过人之处呢?

Akka 提供可伸缩的实时事务处理能力。

Akka在以下方面提供了一致的运行时和编程模型:

  • 纵向扩展性(并发)
  • 横向扩展性(远程调用)
  • 容错性

由于Akka的高内聚性和连贯的语义,学习和管理就成了一件事。

阅读全文

AKKA文档(java版)——用例与部署场景

原文:http://doc.akka.io/docs/akka/2.3.6/intro/deployment-scenarios.html 译者:吴京润

我如何使用与部署akka?

有两种不同的使用akka的方式:

  • 作为一个库:作为一个web应用的类路径下的普通JAR使用,将它放在WEB-INF/lib。
  • 在一上主类中通过实例化ActorSystem作为一个独立的应用运行,或使用微内核 (Scala) /(Java)

将akka作为一个库使用

如果你在构建一个web应用,这可能就是你想要的。在库模式下,通过向模块栈添加越来越多的模块有许多种使用akka的方式。

将akka作为独立的微内核使用

akka还可以作为一个独立的微内核运行。更多信息见微内核 (Scala) / (Java) 

AKKA文档(java版)——hello world

原文:http://doc.akka.io/docs/akka/2.3.6/java/hello-world.html 译者:吴京润

基于actor在控制台打印这一知名问候的困难在Typesafe Activator教程中名为Akka Main in Java项目中已有介绍。

本教程说明了通用启动器类akka.Main,只接收一个命令行参数:应用的主actor类名。这个main方法将为运行actor创建基础设施,用来启动指定的主actor以及在主actor终止时为关闭整个应用做出安排

Typesafe Activator中有相同问题域的另一个名为Hello Akka!的教程讲述了更深入的akka基础知识。

AKKA文档(java版)——准备开始

原文:http://doc.akka.io/docs/akka/2.3.6/intro/getting-started.html  译者:吴京润

预备知识

AKKA要求你的计算机已经安装了Java1.6或更高版本。

入门指南与模板项目

学习AKKA的最好方式是下载Typesafe Activator并尝试一个AKKA模板项目。

下载

有许多种下载AKKA的方式。你可以把它当作Typesafe平台的一部分下载(就像上面描述的)。还可以下载完全发布版,它包含微内核以及所有模块。或者使用像Maven或SBT这样的构建工具从AKKA Maven仓库下载依赖。 阅读全文

AKKA文档(java版)

目前我正在翻译AKKA官网文档。翻译:吴京润

译者注:本人正在翻译AKKA官网文档,本篇是文档第一章,欢迎有兴趣的同学加入一起翻译。

阅读全文

AKKA文档(java版)——什么是AKKA?

原文:http://doc.akka.io/docs/akka/2.3.6/intro/what-is-akka.htmll  译者:吴京润

可扩展的实时事务处理

我们相信编写并发、容错、可扩展的应用相当的困难。盖因大多数时候我们一直在使用错误的工具和错误的抽象等级。AKKA就是为了改变这一切的。我们利用角色模型提升了抽象等级,并且提供了一个用来构建可扩展的、弹性的以及响应式应用的更好的平台——更多信息请见Reactive Manifesto。对于容错机制我们采用“让它崩溃”模型,这一模型已在电信行业取得了巨大的成功,旨在构建自我修复与永不停机的系统。角色还提供了透明的分布式抽象以及真正的可扩展且容错应用的基础。

AKKA是开源的,并遵守Apache2许可。

http://akka.io/downloads下载。

请注意所有代码样例的编译,因此如果你想直接访问这些源码,可以去github上访问AKKA文档子项目:JavaScala阅读全文

Quartz教程三:Job与JobDetail介绍

原文链接 | 译文链接 | 翻译:nkcoder | 校对:

本系列教程由quartz-2.2.x官方文档翻译、整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正;有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中)。

正如在教程二中讲到的,Job实现起来很容易,该接口只有一个“execute”方法。本节主要关注:Job的特点、Job接口的execute方法以及JobDetail。

你定义了一个实现Job接口的类,这个类仅仅表明该job需要完成什么类型的任务,除此之外,Quartz还需要知道该Job实例所包含的属性;这将由JobDetail类来完成。

阅读全文

Quartz教程二:API,Job和Trigger

原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞

本系列教程由quartz-2.2.x官方文档翻译、整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正;有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中)。

Quartz API

Quartz API核心接口有:

  • Scheduler – 与scheduler交互的主要API;
  • Job – 你通过scheduler执行任务,你的任务类需要实现的接口;
  • JobDetail – 定义Job的实例;
  • Trigger – 触发Job的执行;
  • JobBuilder – 定义和创建JobDetail实例的接口;
  • TriggerBuilder – 定义和创建Trigger实例的接口;

阅读全文

Quartz教程一:使用quartz

原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞

本系列教程由quartz-2.2.x官方文档翻译、整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正;有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中)

Scheduler在使用之前需要实例化。一般通过SchedulerFactory来创建一个实例。有些用户将factory的实例保存在JNDI中,但直接初始化,然后使用该实例也许更简单(见下面的示例)。

scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。注意:scheduler被停止后,除非重新实例化,否则不能重新启动;只有当scheduler启动后,即使处于暂停状态也不行,trigger才会被触发(job才会被执行)。

阅读全文

Quartz教程:快速入门

原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞

本系列教程由quartz-2.2.x官方文档翻译、整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正;有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中)

欢迎来到quartz快速入门教程。阅读本教程,你将会了解:

  • quartz下载
  • quartz安装
  • 根据你的需要,配置Quartz
  • 开始一个示例应用

当熟悉了quratz调度的基本功能后,可以尝试一些更高级的特性,比如Where,这个一个企业级功能,可以让job和trigger运行在指定的,而不是随机的Terracotta客户端上。

阅读全文

return top