CN105871959A - 一种消息传递的方法、***和装置 - Google Patents
一种消息传递的方法、***和装置 Download PDFInfo
- Publication number
- CN105871959A CN105871959A CN201510032833.0A CN201510032833A CN105871959A CN 105871959 A CN105871959 A CN 105871959A CN 201510032833 A CN201510032833 A CN 201510032833A CN 105871959 A CN105871959 A CN 105871959A
- Authority
- CN
- China
- Prior art keywords
- message
- transmission
- local cache
- needing
- oriented middleware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例公开了一种消息传递的方法、***和装置。该方法包括:发布方向消息中间件服务器发送需要传递的消息;消息中间件服务器将所述需要传递的消息存储于数据库和本地缓存;消息中间件服务器查询本地缓存是否有所述需要传递的信息;若是,消息中间件服务器从本地缓存获取所述需要传递的消息;消息中间件服务器根据订阅关系将所述消息投递给相应的订阅方。利用本申请实施例提供的技术方案可以减少网络、数据库磁盘等开销,提高消息中间件的性能。
Description
技术领域
本申请涉及数据通信技术领域,特别涉及一种消息传递的方法、***和装置。
背景技术
在数据通信技术领域中,对象之间往往利用消息进行交互作用和通信。消息通信的基本方式包括同步方式和异步方式。同步方式中,两个通信的对象之间必须要进行同步。这就意味着每个对象的服务必须都是正常运行的。这样,发送对象中的发送程序(一种服务)和接收对象中的接收程序(同样是一种服务)都一直处于运行状态,并且随时做好相互通信的准备。发送程序向接收程序发起一个消息后,发送程序就会堵塞发送对象当前的进程。因此,发送对象不能与其它应用(也称为应用程序)进行任何的通信以及交互,只能等待接收程序的响应。发送对象得到接收程序返回的消息之后,发送对象才会继续向下运行,进行下一步的业务处理。在异步方式中,两个通信的对象之间可以不用同时在线等待,任何一方只需处理自己的业务。例如发送对象发送消息之后不必仅等待接收方的响应,而是还可以接着处理其他的任务。消息的接收方也不用立即对接收到的消息进行处理。
随着技术的发展,一些大型的***,由于用户量庞大,业务复杂等原因,基于同步通信技术的方式已经无法满***易***对可扩展性、可维护、高性能的需求。所以会采用异步通信技术的方式。作为异步通信技术的一种,中间件(Middleware)技术提供***软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于***软件的集中的逻辑,是一种独立的***软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
消息中间件(Message Oriented Middleware,MOM,也称为面向消息的中间件)技术,提供了以松散耦合的灵活方式进行消息传递的一种中间件机制。MOM能够实现在不同平台之间的通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同。目前主流的消息中间件产品包括国际商业机器公司(International Business MachinesCorporation,IBM)的MQ Series,东亚银行(Bank of East Asia,BEA)的MessageQ和太阳公司(Sun)的Java消息服务(Java Message Service,JMS)等。
MOM包括基于存储和转发的应用之间的异步消息传递或同步消息传递。在异步消息传递中,应用之间彼此不直接通信,而是与作为中介的MOM服务器通信。异步中间件技术又包括广播方式和发布-订阅方式两类。
现有技术中一种利用MOM发布-订阅方式进行消息传递的流程图如图1所示。如图1中,具体过程包括:S1,发送应用程序(以下称为发布方)向MOM服务器发送需要发布的消息;S2,MOM服务器将所述需要发布的消息存储在数据库(MOM的一个组件)中;S3,MOM服务器通过网络从数据库中获取所述需要发布的消息;S4,MOM服务器根据订阅关系将所述消息投递给相应的订阅该消息的应用程序(以下称为订阅方)。
在实现本申请过程中,发明人发现现有技术中至少存在如下问题:
发布-订阅模型的MOM实际应用中,MOM服务器每次投递消息都要通过网络查询数据库获得需要传递的消息,这样就会带来一定的网络、数据库磁盘等开销,同时也会影响MOM的性能。
发明内容
本申请实施例的目的是提供一种消息传递的方法、***和装置,以减少网络、数据库磁盘等开销,提高消息中间件的性能。
为解决上述技术问题,本申请实施例提供一种消息传递的方法、***和装置是这样实现的:
一种消息传递的方法,包括:
发布方向消息中间件服务器发送需要传递的消息;
消息中间件服务器将所述需要传递的消息存储于数据库和本地缓存;
消息中间件服务器查询本地缓存是否有所述需要传递的信息;
若是,消息中间件服务器从本地缓存获取所述需要传递的消息;
消息中间件服务器根据订阅关系将所述消息投递给相应的订阅方。
一种消息传递的方法,包括:
接收发布方发送的需要传递的消息;
将所述需要传递的消息存储于数据库和本地缓存;
查询本地缓存是否有所述需要传递的信息;
若是,从本地缓存获取所述需要传递的消息;
根据订阅关系将所述消息投递给相应的订阅方。
一种消息传递的***,包括:
发布方,用于向消息中间件服务器发送需要传递的消息;
消息中间件服务器,所述消息中间件设置有本地缓存,所述本地缓存用于存储所述需要传递的消息;所述消息中间件服务器用于将所述需要传递的消息存储于数据库和本地缓存;查询本地缓存是否有所述需要传递的信息;若是,从本地缓存获取所述需要传递的消息,并根据订阅关系将所述消息投递给相应的订阅方;
数据库,用于存储所述需要传递的消息;
订阅方,用于接收所述需要传递的消息。
一种消息传递的装置,包括:
消息接收单元,用于接收发布方发送的需要传递的消息;
第一消息存储单元,用于将所述需要传递的消息存储于数据库和本地缓存;
查询单元,用于查询本地缓存是否有所述需要传递的信息;
第一消息获取单元,用于当查询单元查询到本地缓存中有所述需要传递的信息时,从本地缓存获取所述需要传递的消息;
第一消息投递单元,用于根据订阅关系将所述消息投递给相应的订阅方。
由以上本申请实施例提供的技术方案可见,本申请实施例中,发布方将需要传递的消息发送给MOM服务器后,MOM服务器将所述需要传递的消息存储于数据库,同时也将所述消息存储于本地缓存。在向订阅方投递需要传递的消息时,无需通过网络从数据库中获得所述消息,可直接从本地缓存获取所述消息,完成消息的传递。与现有技术相比,在利用消息中间件完成消息传递的同时大大减少了网络、数据库磁盘等开销,提高了消息中间件的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中一种利用MOM发布-订阅方式进行消息传递的流程图;
图2是本申请一种消息传递的方法的第一个实施例的流程图;
图3是本申请一种消息传递的方法的第二个实施例的流程图;
图4是本申请一种消息传递的方法的第三个实施例的流程图;
图5是本申请一种消息传递的方法的第四个实施例的流程图;
图6是本申请一种消息传递的***的第一个实施例的流程图;
图7是本申请一种消息传递的方法的第一个实施例的流程图。
具体实施方式
本申请实施例提供一种消息传递的方法、***和装置。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
以下以几个具体的例子详细说明本申请实施例的具体实现。
以下首先介绍本申请一种消息传递的方法的第一实施例。结合附图2,该实施例包括:
S210:发布方向MOM服务器发送需要传递的消息。
在实际应用中,一般采用消息中间件的都是一些大型的***,因此,这里的发布方一般是多个发布方,也可以是一个发布方,也即同时可能会有一个或多个发布方向MOM服务器发送消息。
进一步的,发布方通常会通过所采用的MOM对应的MOM客户端向MOM服务器发送消息,比如天猫***采用的消息中间件产品为称为“Notify”的消息中间件,会有一个对应的Notify Client供发布方向Notify Server发送消息。
S220:MOM服务器将所述需要传递的消息存储于数据库和本地缓存。
在实际应用中,为了保证消息不丢失,MOM服务器可以将当前还没有发送给订阅方的消息存储在数据库中。MOM服务器可以在将消息成功发送至订阅方后才将消息从数据库中删除。
这里的数据库可以是MySQL。MySQL是一个开放源码的关系型数据库管理***。此外,本申请实施例所述的数据库不仅限于MySQL,在实际中还可以是其他形式,例如非关系型的数据库(Not Only SQL,NoSQL)等,本申请实施例并不以此为限。
MOM服务器除了将所述需要传递的消息存储于数据库,还可以将所述需要传递的消息存储于本地缓存。
进一步的,这里可以通过近期最少使用算法(Least Recently Used,LRU)或先进先出队列(First Input First Output,FIFO)对本地缓存进行管理,以保证存储在本地缓存的消息在本地缓存的存储容量范围内。
此外,本申请实施例实现本地缓存的管理不仅限于近期最少使用算法或先进先出队列,在实际中还可以是其他形式,本申请实施例并不以此为限。
S230:MOM服务器查询本地缓存是否有所述需要传递的信息。
本申请实施例中,当MOM服务器将所述需要传递的消息存储到数据库和本地缓存后,MOM服务器将所述消息投递给相应的订阅方之前,需要从本地缓存获取所述消息。一般地,MOM服务器将所述消息存储于本地缓存到MOM服务器从本地缓存获取所述消息之间,往往有一段执行的时间。在这段时间中,可能有多个发布方向MOM服务器发送需要传递的消息,导致所述本地缓存中存储内容的更新;根据本地缓存管理策略,当前需要传递的消息可能已经不在本地缓存中,故需要先查询所述消息是否还在本地缓存中。
若步骤S230的查询结果为是,进入步骤S240。
S240:MOM服务器从本地缓存获取所述需要传递的消息。
S250:MOM服务器根据订阅关系将所述消息投递给相应的订阅方。
这里的订阅关系是在订阅启动的时候就会发送给MOM服务器,也即在发布方向MOM服务器发送消息之前,订阅方需要向MOM服务器发送订阅请求和订阅关系。然后MOM服务器将所述订阅关系保存起来。
步骤S240中,MOM服务器可以从本地缓存获取所述需要传递的消息。本步骤中,MOM服务器可以根据订阅关系将所述消息投递给相应的订阅方。
由此可见,本申请实施例提供的技术方案中发布方将需要传递的消息发送给MOM服务器后,MOM服务器将所述需要传递的消息存储于数据库,同时也将所述消息存储于本地缓存。在向订阅方投递需要传递的消息时,无需通过网络从数据库中获得所述消息,可直接从本地缓存获取所述消息,完成消息的传递。与现有技术相比,在利用消息中间件完成消息传递的同时大大减少了网络、数据库磁盘等开销,提高了消息中间件的性能。
由于MOM服务器将所述需要传递的消息存储于本地缓存到MOM服务器从本地缓存获取所述消息之间,往往有一段执行的时间。在这段执行的时间中,可能会有多个发布方向MOM服务器发送需要传递的信息,导致所述本地缓存中存储内容的更新;因此,根据本地缓存管理策略,当前需要传递的消息可能已经不在本地缓存中。
在本申请第一方法实施例的基础上,结合附图3,本申请第二方法实施例具体包括:
S310:发布方向MOM服务器发送需要传递的消息。
在实际应用中,一般采用消息中间件的都是一些大型的***,因此,这里的发布方一般是多个发布方,也可以是一个发布方,也即同时可能会有一个或多个发布方向MOM服务器发送消息。
进一步的,发布方通常会通过所采用的MOM对应的MOM客户端向MOM服务器发送消息,比如天猫***采用的消息中间件产品为称为“Notify”的消息中间件,会有一个对应的Notify Client供发布方向Notify Server发送消息。
S320:MOM服务器将所述需要传递的消息存储于数据库和本地缓存。
在实际应用中,为了保证消息不丢失,MOM服务器可以将当前还没有发送给订阅方的消息存储在数据库中。MOM服务器可以在将消息成功发送至订阅方后才将消息从数据库中删除。
S330:MOM服务器查询本地缓存是否有所述需要传递的消息。
本申请实施例中,当MOM服务器将所述需要传递的消息存储到数据库和本地缓存后,MOM服务器将所述消息投递给相应的订阅方之前,需要从本地缓存获取所述消息。一般地,MOM服务器将所述消息存储于本地缓存到MOM服务器从本地缓存获取所述消息之间,往往有一段执行的时间。在这段时间中,可能有多个发布方向MOM服务器发送消息,导致所述本地缓存中存储内容的更新,根据本地缓存管理策略,当前需要传递的消息可能已经不在本地缓存中,故需要先查询所述消息是否还在本地缓存中。
如果MOM服务器查询到本地缓存有所述需要传递的信息时,进入步骤S341;如果MOM服务器查询到本地缓存没有所述需要传递的信息时,进入步骤S342。
S341:MOM服务器从本地缓存获取所述需要传递的消息;
当MOM服务器从本地缓存获取所述需要传递的消息后,进入步骤S350。
S342:MOM服务器从数据库获取所述需要传递的消息,并将所述需要传递的消息存储于本地缓存。
由于数据库中会存储有当前还没有发送完的消息,因此当无法从本地缓存获取所述需要传递的消息时,可以通过网络查询数据库,从数据库中获取所述消息,并将所述消息存储于本地缓存,以便后续使用,并进入步骤S350。
S350:MOM服务器根据订阅关系将所述消息投递给相应的订阅方。
这里的订阅关系是在订阅启动的时候就会发送给MOM服务器,也即在发布方向MOM服务器发送消息之前,订阅方就会向MOM服务器发送订阅请求和订阅关系发送给MOM服务器。然后MOM服务器将所述订阅关系保存起来。
当MOM服务器从本地缓存或数据库获取所述需要传递的消息后,可以根据订阅关系将所述消息投递给相应的订阅方。
由此可见,本申请实施例提供的技术方案中,当发布方将需要传递的消息发送给MOM服务器后,MOM服务器将所述需要传递的消息存储于数据库,同时也将所述消息存储于本地缓存。在向订阅方投递需要传递的消息时,无需每次投递消息前都查询数据库,可直接从本地缓存获取所述消息。只有当本地缓存中没有所述消息时,MOM服务器才通过网络从数据库中获得所述消息,并完成消息的传递。与现有技术相比,在利用消息中间件完成消息传递的同时大大减少了网络、数据库磁盘等开销,提高了消息中间件的性能。
上述第一方法实施例,考虑MOM服务器为主的步骤,可以演化为第三方法实施例,结合附图4,具体包括:
S410:接收发布方发送的需要传递的消息。
S420:将所述需要传递的消息存储于数据库和本地缓存。
S430:查询本地缓存是否有所述需要传递的信息。
当查询到本地缓存有所述需要传递的信息,进入步骤S440。
S440:从本地缓存获取所述需要传递的消息。
S450:根据订阅关系将所述消息投递给相应的订阅方。
由此可见,本申请实施例提供的技术方案中MOM服务器通过将发布方发送的需要传递的消息存储于数据库,同时也将所述消息存储于本地缓存。在向订阅方投递需要传递的消息时,无需通过网络从数据库中获得所述消息,可直接从本地缓存获取所述消息,并完成消息的传递。与现有技术相比,在利用消息中间件完成消息传递的同时大大减少了网络、数据库磁盘等开销,提高了消息中间件的性能。
上述第二方法实施例,考虑MOM服务器为主的步骤,可以演化为第四方法实施例,结合附图5,具体包括:
S510:接收发布方发送的需要传递的消息。
S520:将所述需要传递的消息存储于数据库和本地缓存。
S530:查询本地缓存是否有所述需要传递的信息。
如果查询到本地缓存有所述需要传递的信息,进入步骤S541;如果查询到本地缓存没有所述需要传递的信息,进入步骤S542。
S541:从本地缓存获取所述需要传递的消息。
当MOM服务器从本地缓存获取所述需要传递的消息后,进入步骤S550。
S542:从数据库获取所述需要传递的消息,并将所述需要传递的消息存储于本地缓存。
由于数据库中会存储有当前还没有发送至订阅方的消息,因此,当无法从本地缓存获取所述需要传递的消息时,MOM服务器可以通过网络查询数据库,从数据库中获取所述消息,并将所述消息存储于本地缓存,以便后续使用,并进入步骤S550。
S550:根据订阅关系将所述消息投递给相应的订阅方。
由此可见,本申请实施例提供的技术方案中MOM服务器通过将发布方发送的需要传递的消息存储于数据库,同时也将所述消息存储于本地缓存。在向订阅方投递需要传递的消息时,无需每次投递消息前都查询数据库,可直接从本地缓存获取所述消息。只有当本地缓存中没有所述消息时,MOM服务器才通过网络从数据库中获得所述消息,并完成消息的传递。与现有技术相比,在利用消息中间件完成消息传递的同时大大减少了网络、数据库磁盘等开销,提高了消息中间件的性能。
上述第一方法实施例,对应的消息传递***第一实施例可以如图6所示,该***600包括:
发布方610,用于向MOM服务器发送需要传递的消。
MOM服务器620,所述消息中间件设置有本地缓存,所述本地缓存用于存储所述需要传递的消息;所述消息中间件服务器用于将所述需要传递的消息存储于数据库和本地缓存;查询本地缓存是否有所述需要传递的信息;若是,从本地缓存获取所述需要传递的消息,并根据订阅关系将所述消息投递给相应的订阅方。
数据库630,用于存储所述需要传递的消息。
订阅方640,用于接收所述需要传递的消息。
上述第一方法实施例,对应的消息传递装置第一实施例可以如图7所示,该装置700包括:
消息接收单元710,用于接收发布方发送的需要传递的消息。
第一消息存储单元720,用于将所述需要传递的消息存储于数据库和本地缓存。
查询单元730,用于查询本地缓存是否有所述需要传递的信息。
第一消息获取单元740,用于当查询单元查询到本地缓存中有所述需要传递的信息时,从本地缓存获取所述需要传递的消息。
第一消息投递单元750,用于根据订阅关系将所述消息投递给相应的订阅方。
进一步的,该装置还包括:第二消息获取单元,用于当查询单元查询到本地缓存中没有所述需要传递的信息时,从数据库获取所述需要传递的消息。
第二消息存储单元,用于将所述需要传递的消息存储于本地缓存。
第二消息投递单元,用于根据订阅关系将所述消息投递给相应的订阅方。
由此可见,本申请实施例提供的一种消息传递的方法、***和装置,当发布方将需要传递的消息发送给MOM服务器后,MOM服务器将所述需要传递的消息存储于数据库,同时也将所述消息存储于本地缓存。在向订阅方投递需要传递的消息时,无需每次投递消息前都查询数据库,可直接从本地缓存获取所述消息。只有当本地缓存中没有所述消息时,MOM服务器才通过网络从数据库中获得所述消息,并完成消息的传递。与现有技术相比,在利用消息中间件完成消息传递的同时大大减少了网络、数据库磁盘等开销,提高了消息中间件的性能。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java HardwareDescription Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit HardwareDescription Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、AtmelAT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。该计算机软件产品可以包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。该计算机软件产品可以存储在内存中,内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括短暂电脑可读媒体(transitory media),如调制的数据信号和载波。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (14)
1.一种消息传递的方法,其特征在于,包括:
发布方向消息中间件服务器发送需要传递的消息;
消息中间件服务器将所述需要传递的消息存储于数据库和本地缓存;
消息中间件服务器查询本地缓存是否有所述需要传递的信息;
若是,消息中间件服务器从本地缓存获取所述需要传递的消息;
消息中间件服务器根据订阅关系将所述消息投递给相应的订阅方。
2.根据权利要求1所述的消息传递的方法,其特征在于,该方法还包括:
当所述消息中间件服务器查询到本地缓存没有所述需要传递的信息时,消息中间件服务器从数据库获取所述需要传递的消息,并将所述需要传递的消息存储于本地缓存;
消息中间件服务器根据订阅关系将所述消息投递给相应的订阅方。
3.根据权利要求1或2所述的消息传递的方法,其特征在于,所述发布方向消息中间件服务器发送需要传递的消息包括:
发布方通过消息中间件客户端向消息中间件服务器发送需要传递的消息。
4.根据权利要求1或2所述的消息传递的方法,其特征在于,所述本地缓存的管理方法包括:近期最少使用算法或先进先出队列。
5.一种消息传递的方法,其特征在于,包括:
接收发布方发送的需要传递的消息;
将所述需要传递的消息存储于数据库和本地缓存;
查询本地缓存是否有所述需要传递的信息;
若是,从本地缓存获取所述需要传递的消息;
根据订阅关系将所述消息投递给相应的订阅方。
6.根据权利要求5所述的消息传递的方法,其特征在于,该方法还包括:
当查询到本地缓存没有所述需要传递的信息时,从数据库获取所述需要传递的消息,并将所述需要传递的消息存储于本地缓存;
根据订阅关系将所述消息投递给相应的订阅方。
7.根据权利要求5或6所述的消息传递的方法,其特征在于,所述本地缓存的管理方法包括:近期最少使用算法或先进先出队列。
8.一种消息传递的***,其特征在于,包括:
发布方,用于向消息中间件服务器发送需要传递的消息;
消息中间件服务器,所述消息中间件设置有本地缓存,所述本地缓存用于存储所述需要传递的消息;所述消息中间件服务器用于将所述需要传递的消息存储于数据库和本地缓存;查询本地缓存是否有所述需要传递的信息;若是,从本地缓存获取所述需要传递的消息,并根据订阅关系将所述消息投递给相应的订阅方;
数据库,用于存储所述需要传递的消息;
订阅方,用于接收所述需要传递的消息。
9.根据权利要求8所述的消息传递的***,其特征在于,若查询到本地缓存没有所述需要传递的信息时,所述消息中间件服务器还用于从数据库获取所述需要传递的消息,并将所述需要传递的消息存储于本地缓存,再根据订阅关系将所述消息投递给相应的订阅方。
10.根据权利要求8或9所述的消息传递的***,其特征在于,所述向消息中间件服务器发送需要传递的消息包括:
通过消息中间件客户端向消息中间件服务器发送需要传递的消息。
11.根据权利要求8或9所述的消息传递的***,其特征在于,所述本地缓存的管理方法包括:近期最少使用算法或先进先出队列。
12.一种消息传递的装置,其特征在于,包括:
消息接收单元,用于接收发布方发送的需要传递的消息;
第一消息存储单元,用于将所述需要传递的消息存储于数据库和本地缓存;
查询单元,用于查询本地缓存是否有所述需要传递的信息;
第一消息获取单元,用于当查询单元查询到本地缓存中有所述需要传递的信息时,从本地缓存获取所述需要传递的消息;
第一消息投递单元,用于根据订阅关系将所述消息投递给相应的订阅方。
13.根据权利要求12所述的消息传递的装置,其特征在于,该装置还包括:
第二消息获取单元,用于当查询单元查询到本地缓存中没有所述需要传递的信息时,从数据库获取所述需要传递的消息;
第二消息存储单元,用于将所述需要传递的消息存储于本地缓存;
第二消息投递单元,用于根据订阅关系将所述消息投递给相应的订阅方。
14.根据权利要求12或13所述的消息传递的装置,其特征在于,所述本地缓存的管理方法包括:近期最少使用算法或先进先出队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510032833.0A CN105871959A (zh) | 2015-01-22 | 2015-01-22 | 一种消息传递的方法、***和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510032833.0A CN105871959A (zh) | 2015-01-22 | 2015-01-22 | 一种消息传递的方法、***和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105871959A true CN105871959A (zh) | 2016-08-17 |
Family
ID=56623513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510032833.0A Pending CN105871959A (zh) | 2015-01-22 | 2015-01-22 | 一种消息传递的方法、***和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105871959A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106851411A (zh) * | 2016-12-29 | 2017-06-13 | 深圳Tcl数字技术有限公司 | 电视机控制消息传递方法、***和装置 |
CN107038077A (zh) * | 2016-11-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息蓄洪方法及装置 |
CN107395761A (zh) * | 2017-08-29 | 2017-11-24 | 北京大生在线科技有限公司 | 基于订阅的本地发布在线教育监课*** |
CN108459914A (zh) * | 2017-12-26 | 2018-08-28 | 深圳神州数码云科数据技术有限公司 | 一种中间件命令执行方法及装置 |
CN109446216A (zh) * | 2018-09-12 | 2019-03-08 | 珠海凡泰极客科技有限责任公司 | 一种支持sql语法的消息*** |
CN109451032A (zh) * | 2018-11-20 | 2019-03-08 | 上海联寓智能科技有限公司 | 一种消息传递*** |
CN109672748A (zh) * | 2019-01-03 | 2019-04-23 | 深圳怡化电脑股份有限公司 | 自助设备交易流水的处理方法、处理装置及处理*** |
CN109828961A (zh) * | 2018-12-17 | 2019-05-31 | 上海七印信息科技有限公司 | 一种文章发布高并发缓存方法 |
CN110379195A (zh) * | 2019-08-22 | 2019-10-25 | 公安部交通管理科学研究所 | 基于v2x的交通事件信息定向发布*** |
CN110708312A (zh) * | 2019-09-30 | 2020-01-17 | 交控科技股份有限公司 | 一种ats中消息传递的方法、***和ats |
CN111131299A (zh) * | 2019-12-31 | 2020-05-08 | 上海依图网络科技有限公司 | 基于kubernetes平台的跨网闸数据传输方法、装置、介质及*** |
CN111290973A (zh) * | 2020-05-11 | 2020-06-16 | 深圳市科信通信技术股份有限公司 | 数据写入方法、装置、计算机设备及存储介质 |
CN111711663A (zh) * | 2020-05-26 | 2020-09-25 | 北京金山云网络技术有限公司 | 发布及订阅服务的处理方法、装置及电子设备 |
CN111930861A (zh) * | 2020-08-19 | 2020-11-13 | 上海繁易信息科技股份有限公司 | 基于Kafka的实时数据解析订阅处理方法和装置 |
CN112422670A (zh) * | 2020-11-10 | 2021-02-26 | 广州凡科互联网科技股份有限公司 | 一种基于中间消息设计和异步推送模型设计方法 |
CN114244899A (zh) * | 2021-12-02 | 2022-03-25 | 上海微盟企业发展有限公司 | 一种消息传递方法、装置及可读存储介质 |
CN116056052A (zh) * | 2022-08-17 | 2023-05-02 | 荣耀终端有限公司 | 消息处理方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090300403A1 (en) * | 2008-05-30 | 2009-12-03 | Mark Cameron Little | Fine grained failure detection in distributed computing |
CN102938731A (zh) * | 2012-11-22 | 2013-02-20 | 北京锐易特软件技术有限公司 | 一种基于代理缓存适配模型的交换集成装置及方法 |
US20140078876A1 (en) * | 2012-09-14 | 2014-03-20 | International Business Machines Corporation | Controlling persisting of data to disk |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅***及其工作方法 |
-
2015
- 2015-01-22 CN CN201510032833.0A patent/CN105871959A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090300403A1 (en) * | 2008-05-30 | 2009-12-03 | Mark Cameron Little | Fine grained failure detection in distributed computing |
US20140078876A1 (en) * | 2012-09-14 | 2014-03-20 | International Business Machines Corporation | Controlling persisting of data to disk |
CN102938731A (zh) * | 2012-11-22 | 2013-02-20 | 北京锐易特软件技术有限公司 | 一种基于代理缓存适配模型的交换集成装置及方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅***及其工作方法 |
Non-Patent Citations (1)
Title |
---|
郑一村: "基于XML消息的异构数据集成方法与应用", 《中山大学硕士学位论文》 * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038077A (zh) * | 2016-11-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息蓄洪方法及装置 |
CN107038077B (zh) * | 2016-11-17 | 2021-07-27 | 创新先进技术有限公司 | 消息蓄洪方法及装置 |
CN106851411A (zh) * | 2016-12-29 | 2017-06-13 | 深圳Tcl数字技术有限公司 | 电视机控制消息传递方法、***和装置 |
CN107395761B (zh) * | 2017-08-29 | 2020-09-18 | 北京大生在线科技有限公司 | 基于订阅的本地发布在线教育监课*** |
CN107395761A (zh) * | 2017-08-29 | 2017-11-24 | 北京大生在线科技有限公司 | 基于订阅的本地发布在线教育监课*** |
CN108459914A (zh) * | 2017-12-26 | 2018-08-28 | 深圳神州数码云科数据技术有限公司 | 一种中间件命令执行方法及装置 |
CN108459914B (zh) * | 2017-12-26 | 2021-01-01 | 深圳神州数码云科数据技术有限公司 | 一种中间件命令执行方法及装置 |
CN109446216A (zh) * | 2018-09-12 | 2019-03-08 | 珠海凡泰极客科技有限责任公司 | 一种支持sql语法的消息*** |
CN109451032A (zh) * | 2018-11-20 | 2019-03-08 | 上海联寓智能科技有限公司 | 一种消息传递*** |
CN109451032B (zh) * | 2018-11-20 | 2021-11-23 | 上海联寓智能科技有限公司 | 一种消息传递*** |
CN109828961A (zh) * | 2018-12-17 | 2019-05-31 | 上海七印信息科技有限公司 | 一种文章发布高并发缓存方法 |
CN109828961B (zh) * | 2018-12-17 | 2023-12-08 | 上海七印信息科技有限公司 | 一种文章发布高并发缓存方法 |
CN109672748A (zh) * | 2019-01-03 | 2019-04-23 | 深圳怡化电脑股份有限公司 | 自助设备交易流水的处理方法、处理装置及处理*** |
CN109672748B (zh) * | 2019-01-03 | 2021-08-13 | 深圳怡化电脑股份有限公司 | 自助设备交易流水的处理方法、处理装置及处理*** |
CN110379195A (zh) * | 2019-08-22 | 2019-10-25 | 公安部交通管理科学研究所 | 基于v2x的交通事件信息定向发布*** |
CN110708312A (zh) * | 2019-09-30 | 2020-01-17 | 交控科技股份有限公司 | 一种ats中消息传递的方法、***和ats |
CN111131299A (zh) * | 2019-12-31 | 2020-05-08 | 上海依图网络科技有限公司 | 基于kubernetes平台的跨网闸数据传输方法、装置、介质及*** |
CN111290973A (zh) * | 2020-05-11 | 2020-06-16 | 深圳市科信通信技术股份有限公司 | 数据写入方法、装置、计算机设备及存储介质 |
CN111711663A (zh) * | 2020-05-26 | 2020-09-25 | 北京金山云网络技术有限公司 | 发布及订阅服务的处理方法、装置及电子设备 |
CN111930861A (zh) * | 2020-08-19 | 2020-11-13 | 上海繁易信息科技股份有限公司 | 基于Kafka的实时数据解析订阅处理方法和装置 |
CN112422670A (zh) * | 2020-11-10 | 2021-02-26 | 广州凡科互联网科技股份有限公司 | 一种基于中间消息设计和异步推送模型设计方法 |
CN114244899A (zh) * | 2021-12-02 | 2022-03-25 | 上海微盟企业发展有限公司 | 一种消息传递方法、装置及可读存储介质 |
CN114244899B (zh) * | 2021-12-02 | 2024-05-17 | 上海微盟企业发展有限公司 | 一种消息传递方法、装置及可读存储介质 |
CN116056052A (zh) * | 2022-08-17 | 2023-05-02 | 荣耀终端有限公司 | 消息处理方法、装置、电子设备和存储介质 |
CN116056052B (zh) * | 2022-08-17 | 2023-10-31 | 荣耀终端有限公司 | 消息处理方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105871959A (zh) | 一种消息传递的方法、***和装置 | |
US11341131B2 (en) | Query scheduling based on a query-resource allocation and resource availability | |
US11321321B2 (en) | Record expansion and reduction based on a processing task in a data intake and query system | |
US11442935B2 (en) | Determining a record generation estimate of a processing task | |
US11586627B2 (en) | Partitioning and reducing records at ingest of a worker node | |
US11580107B2 (en) | Bucket data distribution for exporting data to worker nodes | |
US20200364223A1 (en) | Search time estimate in a data intake and query system | |
US20190258635A1 (en) | Determining Records Generated by a Processing Task of a Query | |
US9712645B2 (en) | Embedded event processing | |
US10904122B2 (en) | Facilitating workload-aware shuffling and management of message types in message queues in an on-demand services environment | |
TWI467505B (zh) | 支援使用者內容饋入之方法與系統 | |
US8635250B2 (en) | Methods and systems for deleting large amounts of data from a multitenant database | |
US10546021B2 (en) | Adjacency structures for executing graph algorithms in a relational database | |
WO2016206600A1 (zh) | 一种信息流数据的处理方法和装置 | |
US20190102387A1 (en) | Geo-hashing for proximity computation in a stream of a distributed system | |
CN107395665A (zh) | 一种区块链业务受理及业务共识方法及装置 | |
JP2017530469A (ja) | イベント処理のための動的に型付けされたビッグデータによるイベントの充実化 | |
CN105637524B (zh) | 硬件平台中的资产管理设备和方法 | |
CN110389989B (zh) | 一种数据处理方法、装置及设备 | |
US11750692B2 (en) | Connection pool anomaly detection mechanism | |
JP2009530738A (ja) | サービスシーケンス内の変換のための宣言 | |
US20200004560A1 (en) | Adaptive user-interface assembling and rendering | |
CN111881329A (zh) | 一种账户余额管理方法和*** | |
CN112783887A (zh) | 一种基于数据仓库的数据处理方法及装置 | |
US10530724B2 (en) | Large data management in communication applications through multiple mailboxes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160817 |
|
RJ01 | Rejection of invention patent application after publication |