setproperty(setproperty怎么读)

前沿拓展:

setproperty

jsp:setProperty用来设置已经实例化的Bean对象的属性;

name属性:表示要设置属性的是哪个Bea

除了实时消息,QMQ还支持任意时间的延时消息,当时在开源版本的RocektMQ里提供了多种固定延迟level的延时消息支持,也就是可以发送几种固定延时时间的延时消息,比如延时10s, 30s…,但是基于我们现有的业务特征,这种不同延时level的延时消息并不能满足我们的需求,我们需要任意时间延时。在OTA场景中,客人经常是预订未来某个时刻的酒店或者机票,这个时间是不固定的,我们无法使用几个固定的延时level来实现这个场景。

我们的延时消息是使用两层hash wheel timer来实现的。第一层位于磁盘上,每个小时(默认一个小时,可配置)为一个刻度,每个刻度会生成一个数据日志文件,根据业务特征,我们觉得支持两年(默认两年,可配置)内任意时间延时就够了,那么最多会生成2 * 366 * 24 = 17568个文件。第二层在内存中,当消息的投递时间即将到来的时候,会将这个小时的消息索引 (偏移量,投递时间等) 从磁盘文件加载到内存中的 hash wheel timer上。

setproperty(setproperty怎么读)

在延时消息里也存在三种 log:

message log,和实时消息里的message log类似,收到消息后append到该 log,append成功后立即返回。

schedule log,按照投递时间组织,每小时一个。该log是回放message log后根据延时时间放置对应的log上,这是上面描述的两层hash wheel timer的第一层,位于磁盘上。该log包含完整消息内容,所以message log里回放了之前的都可以删除,可以大大的节约磁盘空间。

dispatch log,延时消息投递后写入,主要用于在应用重启后能确定哪些消息已经投递。

工程地址:https://github.com/qunarcorp/qmq

作者简介:去哪儿网QMQ团队隶属于去哪儿网基础研发部 – 基础架构部,主要负责开发和维护QMQ消息中间件,满足业务团队需求,为业务团队提供良好的消息使用体验,同时保证系统的平稳运行。

负责人王克礼:2015年加入去哪儿网,资深Java开发工程师,具备多年企业中间件的开发实践经验,完整参与了QMQ新版本的设计与实现,希望能够持续提升QMQ。

【END】

拓展知识:

原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/71504.html