CN104980450A - 一种消息传递方法和系统及消息中间件 - Google Patents
一种消息传递方法和系统及消息中间件 Download PDFInfo
- Publication number
- CN104980450A CN104980450A CN201410128537.6A CN201410128537A CN104980450A CN 104980450 A CN104980450 A CN 104980450A CN 201410128537 A CN201410128537 A CN 201410128537A CN 104980450 A CN104980450 A CN 104980450A
- Authority
- CN
- China
- Prior art keywords
- message
- consumer
- persistence
- attribute information
- 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.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种消息传递方法和系统及消息中间件。所述消息传递方法包括:消息发送者发布不同属性信息的消息;消息中间件接收所述发布的消息,并提取该消息在指定属性上的属性信息;消息中间件比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;如果不相同,则将所述的接收的消息传递至消息消费者;如果相同,则持久化该接收的消息;消息中间件将所述持久化的消息按照预定的顺序发送。利用本申请各实施例,利于提升消息传输的有序性和稳定性。
Description
技术领域
本申请涉及数据通信技术领域,特别涉及一种消息传递方法和系统及消息中间件。
背景技术
在数据通信技术领域,尤其是互联网数据通信中,基于中间件的交互通信方式在各大行业中有着广泛的应用。中间件是一种独立的系统软件或服务程序,位于网络、数据库或操作系统上层、应用程序的下层,它为不同的应用程序提供了公用的通信手段,并且独立于网络、数据库和操作系统。中间件为开发者提供了公用于所有环境的应用程序接口,当应用程序中嵌入其函数调用,它便可利用其运行的特定操作系统和网络环境的功能,为应用程序执行通信功能。
目前中间件的种类很多,按照其目的和实现机制的不同,主要有远程过程调用中间件(Remote-Procedure-Call,RPC)、对象请求代理中间件(Object-Request-Brokers,ORB)、消息的中间件(Message-Oriented-Middleware,MOM,也称面向消息的中间件)。其中,消息中间件(MOM)简化了应用程序之间数据的传输,屏蔽底层异构操作系统和网络平台,提供一致的通讯标准和应用开发,确保分布式计算网络环境下可靠的、跨平台的信息传输和数据交换。它基于消息队列的存储-转发机制,并提供特有的异步传输机制,能够基于消息传输和异步事务处理实现应用整合与数据交换。
在消息中间件中,不同的应用程序进程之间传递交换的信息统称为消息,它是数据交换的基本单位。消息中间件技术,提供了以松散耦合的灵活方式进行消息传递的一种中间件机制。图1是一种利用消息中间件技术进行消息传递的过程示意图。如图1所示,在消息发送方,消息生产者Server_A、Server_B可以各自调用发送消息的API函数,将需要发送的消息MSG_A、MSG_B通过消息发送队列服务发送到消息中间件(MOM)中;消息中间件(MOM)进行消息的传递和管理;在消息接收方,消息接收队列服务从消息中间件(MOM)中获得相应的消息,消息消费者Client_A、Client_B调用接收消息的API函数,将各自需要的消息从消息接收队列服务中取出,完成消息的传递。
通常,消息中间件(MOM)要考虑所传递的消息是否正确送达到消息消费者,即消息传输的正确性。此外,消息中间件有时还要考虑消息传输的有序性和稳定性。消息中间件(MOM)的有序性是指对同一消息消费者而言,其所接收到消息的顺序是按既定规则(通常是指与消息生产者的消息发送顺序相对应)接收的。消息中间件(MOM)的稳定性主要是指消息中间件传递消息时消息的阻塞情况,它直接反应了消息中间件对消息的处理效率。
目前,消息中间件(MOM)消息传递机制主要有以下几个方案:
推送机制:消息生产者以推送的方式将消息发送给消息消费者,不需要消息消费者反馈处理结果。这种消息推送机制能高效的处理大量的消息,但由于该机制只负责将消息发送出去,没有消息消费者反馈的处理结果,不能保证消息是否正确送达,即不能保证消息的正确性。
应答机制:消息生产者发送消息给消息消费者,消息消费者接收到消息并处理正确后向消息生产者发送一个确认消息;若消息生产者没有收到当前发送消息的确认消息,将会不断地发送当前的消息给消息消费者,直到收到当前发送消息的确认消息后才会发送下一条消息;若消息生产者收到的是当前发送消息的处理错误消息,同样会不断的发送当前的消息给消费者,直到收到当前发送消息的确认消息后才会发送下一条消息。该应答机制只有在消息生产者收到消息消费者的确认消息后,才会发送下一条消息,保证了消息的正确性。但是,该机制在消息处理过程中,若某一条消息处理错误,消息生产者会不断地重复发送这条消息,导致该处理错误的消息之后的其他消息阻塞,降低了消息中间件的稳定性。
为降低消息阻塞的影响面,采用此方案的消息中间件通常会对不同的业务系统(如订单系统、支付系统、发票系统等)配置不同的消息队列。当某一业务系统发生消息阻塞时,不会影响其他业务系统,但该机制仍然不能解决系统内的消息阻塞问题。该机制在发送消息阻塞时会影响整个系统业务系统,影响面仍然很大,消息处理效率低,稳定性差。
消息确认机制:消息生产者不间断地向各个消息消费者发送消息,同时接收各个消息消费者的反馈消息;若某一消息消费者的某一条消息处理错误时,消息生产者则需要重新发送该条被处理错误的消息,但并不影响其他消息的发送。该消息确认机制在消息处理错误时不影响其他消息的发送,可以解决很好的消息阻塞问题,但对于同一消息消费者而言,在先发送的消息由于处理错误而需要重发,在该被处理错误消息重发之前,若在后产生的消息已经被发送出去,并在此之后发送所述需要重发的错误消息至消息消费者,则对于消息消费者而言其接收到的消息是失序的,即该消息确认机制不能保证消息的有序性。
上述几种消息中间件(MOM)的消息传输机制,在部分仅要求消息传输的正确性或有序性的情况下可以适用。但现有技术应用中往往要求在保证消息传输正确性的前提下,保证消息传输的有序性,同时还得要求消息传输具有良好的稳定性。现有技术中消息中间件(MOM)的消息传输机制难以保证在消息传输正确性的前提下,还能保证消息传输的有序性和良好的稳定性。
发明内容
本申请提供一种消息传递方法和系统及消息中间件,在保证消息传输正确性的前提下,还保证消息传输的有序性,同时还解决业务系统的消息阻塞问题,提高消息传输的稳定性。
为解决上述问题,本申请提供的消息传递方法和系统及消息中间件的实现方案如下:
一种消息传递方法,包括以下处理步骤:
消息中间件接收消息发送者发布的消息,并提取该消息在指定属性上的属性信息;
消息中间件比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;如果不相同,则将所述的接收的消息传递至消息消费者;如果相同,则持久化该接收的消息;
消息中间件将所述持久化的消息按照预定顺序发送。
一种消息传递系统,包括:
消息发送者,包括至少一个消息生产者,所述消息生产者用于发布不同属性的消息;
消息中间件,用于接收所述发布的消息,并提取该消息在指定属性上的属性信息;还用于比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;当比较结果为不相同时,将所述的接收的消息传递至消息消费者;当比较结果为相同时,持久化该接收的消息;还用于将所述持久化的消息按照预定的顺序发送;
消息消费者,用于接收消息中间件发来的消息。
一种消息中间件,包括:
消息接收单元,用于接收消息发送者发布的消息;
属性提取单元,用于从消息接收单元接收的消息中提取该消息在指定属性上的属性信息;
错误信息表,用于保存预置的属性信息;
比较单元,用于比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;
第一发送单元,用于当比较单元比较结果为不相同时,将所述的接收的消息传递至消息消费者;
持久化单元,用于当比较单元比较结果为相同时,持久化所述属性信息相同的消息;
第二发送单元,用于将所述持久化的消息按照预定的顺序发送所述持久化单元中的消息。
本申请提供的一种消息传递方法和系统及消息中间件,即使在某些主体的消息传输不成功的情况下,也不会影响其他消息正常传输。对于具有较大量的消息需要利用消息中间件在消息发送者和消息接收者之间传输的情况,可以保证消息传输的稳定性。此外,消息中间件将所述持久化的消息按照预定的顺序发送,可以使消息消费者按照正确的顺序接收这些消息,从而可以包括消息传输的有序性。由于可以加入消息反馈机制,因此还可以保证消息传输的正确性。
附图说明
图1是现有技术中利用消息中间件技术进行消息传递的过程示意图;
图2是本申请一消息传递方法实施例的流程图;
图3是本申请一消息传递方法实施例的实施场景示意图;
图4是本申请一消息传递系统的模块图;
图5是本申请一消息中间件的模块图;
图6是本申请一消息中间件实施例的模块图;
图7是本申请一消息中间件实施例的模块图;
图8是本申请一消息中间件实施例的模块图;
图9是本申请一消息传递方法实施例的实施场景示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
首先介绍本申请消息传递方法的一个实施例1。
图2是本申请一种消息传递方法的实施例1的流程图。如图2所示,该消息传递方法包括:
S210:消息发送者发布消息。
消息发送者发送的消息可以根据消息的主体进行分类。消息的主体可以包括消息的生产者信息和/或消息的消费者信息。所述消息可以采用主体的ID加以标识。例如采用要发送至的消息消费者的ID来唯一标识发送至该消息消费者的消息。这样,要发送至的第一消息消费者的第一ID可以用于标识发送至该第一消息消费者的消息,要发送至的第二消息消费者的第二ID可以用于标识发送至该第二消息消费者的消息。所述消息要发送至的消息消费者的ID可以设置在所述消息的某一字段中。再例如,采用产生消息的消息生产者的ID来唯一标识该消息生产者产生的消息。这样,可以用第三消息生产者的第三ID标识第三消息生产者产生的消息,可以用第四消息生产者的第四ID标识第四消息生产者产生的消息。类似的,所述消息生产者的ID可以设置在其产生的消息的某一字段中。当然,也可以用第三消息生产者的第三ID和第一消费者的第一ID联合起来标识第三消息生产者产生的发送至第一消息消费者消息。类似的,也可以用第四消息生产值的第四ID和第二消息消费者的第二ID联合起来标识第四消息生产者产生的发送至第二消息消费者消息,诸如此类。
在本实施例中,所述消息发送者发布消息,可以是一个或多个消息生产者产生需要发送的一个或多个消息,并且期望接收该消息的一个或多个消息消费者能正确并且按照一定的顺序接收。所述消息生产者,例如为订单系统,该订单系统产生订单消息,其订单消息可以用该订单系统的ID标识。消息发送至的消息消费者,例如为订单系统的用户。这样,所有由订单系统A产生的订单消息可以包含与订单系统A对应的ID,比如包含标识“A”,即订单系统A产生的所有订单消息可以分别使用A1、A2、A3进行标识。也可以将发送至用户的消息标识也附加上与用户对应的ID,例如发送至用户B的B1订单消息、B2支付消息、B3账单消息等,这些B1、B2、B3消息具有标识“B”。
所述消息发送者可以将一个或多个消息生产者产生的消息按预定的接收顺序放置在发送消息队列中,由发送消息队列服务将消息发布至消息中间件。
S220:消息中间件接收发布的消息,并提取该消息在指定属性上的属性信息。
所述消息中间件可以从消息的属性字段中提取该消息在指定属性上的属性信息。
所述属性信息包括消息对应的主体信息。如前所述,所述消息中间件例如可以从消息的属性字段提取到该消息的生产者ID或消息消费者ID,或者这两个的联合ID等等。
S230:消息中间件比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;如果不相同,则将所述的接收的消息传递至消息消费者;如果相同,则持久化该接收的消息。
消息中间件可以将提取的所述属性信息与错误信息表中保存的预置属性信息进行比较。所述错误信息表可以位于消息中间件中,也可以位于消息中间件之外的某一逻辑体上。所述错误消息表中,可以预置属性信息。从而,所述消息中间件可以利用该错误消息表中存有的属性信息进行相应的比较。
所述预置属性信息包括预先确定的主体信息,可以进行删除、修改和增加。例如,一种在错误信息表中增加预置的主体信息的方式包括,通过消息消费者反馈的接收不成功消息增加该消息相应的主体信息至错误信息表。具体的,例如存在消息发送者发布的发送至消息消费者C的消息C1、C2、C3…,消息消费者的ID“C”可以位于所述消息C1、C2、C3中的属性字段作为本申请提到的主体信息。消息消费者C可能对消息C1接收不成功,进而可以反馈该接收不成功的消息C1的主体信息“C”。从而主体信息“C”可以增加至所述错误信息表。当然,所述错误信息表中的错误属性信息也可以通过指定的方式增加、修改或删除,这里并不做限定。
消息中间件提取消息中属性字段的属性信息后,具体的,可以比较该提取的属性信息与所述错误信息表中的预置属性信息是否相同。例如所述错误信息表中预置的属性信息包括C,而提取的发送至消息消费者C的消息C2在其属性字段中包括C,即比较结果相同。在比较结果相同时,消息中间件可以将该消息C2持久化。持久化的一种具体形式例如是保存起来。类似的,后续消息中间件可能接收到发布的发送至消息消费者C的消息C3,则按照上述规则,同样将消息C3保存起来。这里,可以是消息中间件内的逻辑体作为存储单元以存储上述比较结果相同的消息,也可以是其它逻辑体或专门的数据库、专门的实体作为存储单元存储上述比较结果相同的消息。此外,例如之前还存在消息消费者C接收不成功的消息C1,即消息中间件基于消息消费者对消息C1接收不成功的反馈向所述错误信息表中增加属性信息C。则消息中间件中的转发机制可能缓存有该C1消息,或者可以请求消息发送者再次发送所述消息C1。从而,消息中间件可以提取缓存中存有的所述消息消费者接收不成功的消息,并持久化该消息;或者,消息中间件可以请求消息发送者再次发送所述消息消费者接收不成功的消息,并在接收该消息之后持久化该消息。这样,消息中间件可以将从消息消费者接收不成功的第一个消息开始,至其后其他应发送至消息消费者C的消息都保存起来。例如这里可以是消息中间件将发送至消息消费者C的消息C1、C2、C3保存在错误信息表中。
此外,消息中间件提取消息中属性字段的属性信息后,比较该提取的属性信息与所述错误信息表中的预置属性信息不相同时,可以将所述的接收的消息发送至该消息预定发送至的消息消费者。一般地,消息中包括其发送目的地的字段,消息中间件可以按照该字段中表明的目的地转发该消息。结合上述例子,如果经比较所述错误消息表中存储的预置属性信息与提取的消息中的属性信息不同时,例如预置属性信息为C,提取的消息B3中的属性信息为B,则该消息中可以设置有表明发送至目的地消息消费者B的字段,可以将所述的接收的消息B3按照所述目的地字段发送至该消息预定发送至的消息消费者B。
S240:消息中间件将所述持久化的消息按照预定顺序发送。
所述消息中间件将所述持久化的消息按照预定顺序发送。所述预定顺序可以是消息产生时间的先后顺序,也可以是消息在持久化前由消息发送者发布的时间的先后顺序。
可以是在首次接收到消息消费者反馈的错误信息后达到预定时长时按照预定的顺序发送。例如,消息中间件首次接收到消息消费者C反馈的“C1消息接收错误”的消息,将属性信息C增加至错误消息表中。之后的一定时间内,按照上述S210~S230的过程,消息中间件将后续的具有相同属性信息C的C2、C3、C4等消息都持久化处理。并且消息中间件通过提取缓存或要求消息发送者重发等方式获得C1消息,并将C1消息也持久化处理。当消息中间件首次接收到消息消费者C反馈的消息接收错误的消息之后达到预定时长时,可以触发将持久化处理的具有相同属性信息C的消息C1、C2、C3、C4按照其预定接收的顺序发送至消息消费者。例如这样的顺序是从前至后依次为C1-C2-C3-C4-…。合理设置所述预定时长,可以提高本申请消息处理的效率。
所述消息中间件将所述持久化的消息按照预定的顺序发送,也可以是在首次接收到消息消费者反馈的错误信息后持久化处理的消息数量达到预定数目时,按照预定的顺序发送。例如,预定数量设为5,按照上述S210~S230的过程,消息中间件将后续的具有相同属性信息C的C2、C3、C4、C5消息都持久化处理,此外还包括持久化处理的消息C1。处理完C1-C5之后达到持久化处理的消息达到预订数量5。这时,可以触发将持久化处理的具有相同属性信息C的消息C1、C2、C3、C4、C5按照其预定的顺序发送至消息消费者。例如这样的顺序是从前至后依次为C1-C2-C3-C4-C5。
S230中,持久化接收的消息,可以包括一类业务消息的传输中在首次接收到消息消费者反馈的错误信息后所有的后续的消息。这样,S240中,消息中间件可以将持久化的所述后续消息以及所述首次传输失败的消息按照预定的顺序发送。例如,关于相同主体的同一类业务共7条消息,分别为C1~C5。其中首次传输失败的消息为C1,后续消息为C2~C5,持久化处理的消息这里例如为C1~C5全部。
此外,S230中,持久化接收的消息可能包括一类业务消息的传输中在首次接收到消息消费者反馈的错误信息后的部分后续消息,即之后还包括另一部分同一类的业务消息。例如,持久化的消息包括具有相同属性信息C的C1、C2、C3、C4、C5,按照S240,消息中间件可以将所述持久化的这些消息按照从前至后依次为C1-C2-C3-C4-C5的顺序发送至消息消费者。在发送完成这些持久化消息之后,消息中间件继续接收到具有相同属性信息C的消息C6、C7之类,则不需要再对后续的C6、C7消息进行持久化处理。这种情况,如果持久化的消息都被正确接收,为了避免后续同类业务消息由于具有相同属性信息而被消息中间件不正确的持久化处理,则还可以包括:
S250:在所述持久化的消息发送成功后删除所述错误信息表中的所述属性信息。
所述持久化的消息发送成功,可以基于消息消费者反馈的成功接收消息确定。
前面提到,消息中间件可以将所述持久化的这些消息按照从前至后依次为C1-C2-C3-C4-C5的顺序发送至消息消费者。在发送完成这些持久化消息之后,消息中间件继续接收到具有相同属性信息C的消息C6、C7等,则不需要再对后续的C6、C7消息进行持久化处理。这时,可以删除所述错误信息表中的所述属性信息C。这样,后续消息中间件可以将消息C6、C7直接发送至消息消费者。
利用上述本申请的方法实施例,即使在某些主体的消息传输不成功的情况下,也不会影响其他消息正常传输。对于具有较大量的消息需要利用消息中间件在消息发送者和消息接收者之间传输的情况,可以保证消息传输的稳定性。此外,消息中间件将所述持久化的消息按照预定的顺序发送,可以使消息消费者按照正确的顺序接收这些消息,从而可以包括消息传输的有序性。由于可以加入消息反馈机制,因此还可以保证消息传输的正确性。
再一个实施例中,以图3加以说明本申请上述方法的具体应用。如图3中,消息发送者例如包括3个消息生产者,分别为消息生产者D、消息生产者E、消息生产者F。这3个消息生产者可以分别代表不同的业务系统。这3个消息生产者可能都与同一消息消费者M传递消息。消息生产者D产生的消息例如标识为D1、D2、D3,这些消息都具有属性信息D;类似的,消息生产者E产生的消息例如标识为E1、E2、E3,这些消息都具有属性信息E;消息生产者F产生的消息例如标识为F1、F2、F3,这些消息都具有属性信息F。消息发送者发布不同属性信息的消息后,消息中间件可以接收这些发布的消息。消息中间件中,这里设其预置属性信息为E。
当消息中间件接收到消息生产者D产生的消息D1、D2、D3时,可以提取这类消息的属性信息D。消息中间件进而将这些消息的属性信息D与消息中间件中预置的属性信息E比较,判断不一致。进而,消息中间件将消息D1、D2、D3发送至消息消费者M。
当消息中间件接收到消息生产者E产生的消息E1、E2、E3时,可以提取这类消息的属性信息E。消息中间件进而将这些消息的属性信息E与消息中间件中预置的属性信息E比较,判断一致。进而,消息中间件保存消息E1、E2、E3,而不将这些消息发送至消息消费者M。
当消息中间件接收到消息生产者F产生的消息F1、F2、F3时,可以提取这类消息的属性信息F。消息中间件进而将这些消息的属性信息F与消息中间件中预置的属性信息E比较,判断不一致。进而,消息中间件将消息F1、F2、F3发送至消息消费者M。
当消息中间件接收、存储消息E1、E2、E3达到预定时长,或者存储消息的数量达到预定的数量3时,可以将这些存储的消息E1、E2、E3按照从前至后依次为E1-E2-E3的顺序发送至消息消费者。
其中,消息中间件中预置的属性信息E,可以是预先设定的。具体的,可以是消息中间件根据前次消息消费者M反馈的E0消息接收错误的信息而得到。这种情况下,可以将E0消息的属性信息E设定为预置属性信息。消息中间件还可以将缓存中存有的E0消息与前述E1、E2、E3消息一块存储起来。相应的,后续可以将这些存储的消息E1、E2、E3、E0按照从前至后依次为E0-E1-E2-E3的顺序发送至消息消费者。这样,可以保证消息消费者M接收顺序的有序性。
又一个实施例中,以图9加以说明本申请上述方法的具体应用。如图9中,消息发送者例如包括1个消息生产者D和3个消息消费者。这3个消息消费者例如分别为消息消费者L、消息消费者M、消息消费者N。这3个消息消费者可以分别代表不同的用户。这3个消息消费者可能都与同一消息生产者D传递消息。消息生产者D产生的消息例如分别具有属性信息L、M、N。其中,具有属性信息L的消息L1、L2、L3可以是发至消息消费者L,具有属性信息M的消息M1、M2、M3可以是发至消息消费者M,具有属性信息N的消息N1、N2、N3可以是发至消息消费者N。消息发送者发布不同属性信息的消息后,消息中间件可以接收这些发布的消息。消息中间件中,这里设其预置属性信息为M。
当消息中间件接收到消息生产者D产生的消息L1、L2、L3时,可以提取这类消息的属性信息L。消息中间件进而将这些消息的属性信息L与消息中间件中预置的属性信息M比较,判断不一致。进而,消息中间件将消息L1、L2、L3发送至消息消费者M。
当消息中间件接收到消息生产者D产生的消息M1、M2、M3时,可以提取这类消息的属性信息M。消息中间件进而将这些消息的属性信息M与消息中间件中预置的属性信息M比较,判断一致。进而,消息中间件保存消息M1、M2、M3,而不将这些消息发送至消息消费者M。
当消息中间件接收到消息生产者D产生的消息N1、N2、N3时,可以提取这类消息的属性信息N。消息中间件进而将这些消息的属性信息F与消息中间件中预置的属性信息M比较,判断不一致。进而,消息中间件将消息N1、N2、N3发送至消息消费者N。
当消息中间件接收、存储消息M1、M2、M3达到预定时长,或者存储消息的数量达到预定的数量3时,可以将这些存储的消息M1、M2、M3按照从前至后依次为M1-M2-M3的顺序发送至消息消费者。
其中,消息中间件中预置的属性信息M,可以是预先设定的。具体的,可以是消息中间件根据前次消息消费者M反馈的M0消息接收错误的信息而得到。这种情况下,可以将M0消息的属性信息M设定为预置属性信息。消息中间件还可以将缓存中存有的M0消息与前述M1、M2、M3消息一块存储起来。相应的,后续可以将这些存储的消息M1、M2、M3、M0按照从前至后依次为M0-M1-M2-M3的顺序发送至消息消费者。这样,可以保证消息消费者M接收顺序的有序性。
以下介绍本申请一种消息传递系统实施例,图4示出了该系统实施例的示意图,如图4中所示,该系统实施例包括:
消息发送者410,包括至少一个消息生产者411,所述消息生产者411用于发布不同属性的消息;
消息中间件420,用于接收所述发布的消息,并提取该消息在指定属性上的属性信息;还用于比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;当比较结果为不相同时,将所述的接收的消息传递至消息消费者;当比较结果为相同时,持久化该接收的消息;还用于将所述持久化的消息按照预定的顺序发送;
消息消费者430,用于接收消息中间件发来的消息。
以下介绍本申请一种消息中间件实施例,图5示出了该消息中间件实施例的模块图,如图5中所示,该消息中间件实施例包括:
消息接收单元510,用于接收消息发送者发布的消息;
属性提取单元520,用于从消息接收单元接收的消息中提取该消息在指定属性上的属性信息;
错误信息表530,用于保存预置的属性信息;
比较单元540,用于比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;
第一发送单元550,用于当比较单元比较结果为不相同时,将所述的接收的消息传递至消息消费者;
持久化单元560,用于当比较单元比较结果为相同时,持久化所述属性信息相同的消息;
第二发送单元570,用于将所述持久化的消息按照预定的顺序发送所述持久化单元中的消息。
所述属性信息可以包括消息对应的主体信息。所述消息的主体信息可以包括消息的生产者信息、消息的消费者信息,和消息的生产者信息与消息的消费者信息的结合中的至少一种。
所述属性信息可以位于消息的属性字段中。
所述的消息中间件实施例,还可以如图6所示,在图5的基础上还包括:
反馈信息接收单元610,用于接收消息消费者反馈的接收不成功消息;
属性增加单元620,用于增加所述反馈信息接收单元接收的接收不成功的消息对应的主体信息。
所述的消息中间件实施例,还可以如图7所示,在图6的基础上还包括:
信息提取单元710,用于提取缓存中存有的所述消息消费者接收不成功的消息,并存入所述持久化单元。
所述的消息中间件实施例,还可以如图8所示,在图6的基础上还包括:
请求单元810,用于向消息生产者发送请求,所述请求包括请求发送所述消息消费者接收不成功的消息;还用于将消息生产者再次发送的消息保存到所述持久化单元。
所述的消息中间件实施例,在图5的基础上还可以包括:
计时单元,用于在消息中间件首次接收到消息消费者反馈的错误信息后开始计时,
相应的,所述第二发送单元在计时单元计时达到预定时长时按照预定的顺序发送所述持久化单元中的消息。
所述的消息中间件实施例,在图5的基础上还可以包括:
计数单元,用于在首次接收到消息消费者反馈的错误信息后对持久化单元处理的消息的数量计数,
相应的,所述第二发送单元在计数单元计数达到预定数目时按照预定的顺序发送所述持久化单元中的消息。
所述的消息中间件实施例,在图5的基础上还可以包括:
删除单元,用于在所述第二发送单元将所述持久化单元中的所述消息发送成功后,删除所述错误信息表中的相应属性信息。
所述的消息中间件实施例,在图5的基础上,所述反馈信息接收单元还用于基于所述消息消费者反馈的成功接收的消息确定发送成功。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (19)
1.一种消息传递方法,其特征在于,包括以下处理步骤:
消息中间件接收消息发送者发布的消息,并提取该消息在指定属性上的属性信息;
消息中间件比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;如果不相同,则将所述的接收的消息传递至消息消费者;如果相同,则持久化该接收的消息;
消息中间件将所述持久化的消息按照预定顺序发送。
2.如权利要求1所述的方法,其特征在于,所述属性信息包括消息对应的主体信息。
3.如权利要求2所述的方法,其特征在于,所述主体信息包括消息的生产者信息、消息的消费者信息和消息的生产者信息与消息的消费者信息的结合中的至少一种。
4.如权利要求1所述的方法,其特征在于,所述属性信息位于消息的属性字段中。
5.如权利要求1所述的方法,其特征在于,所述错误信息表中保存的预置属性信息包括:
消息中间件存储消息消费者反馈的接收不成功的消息对应的主体信息。
6.如权利要求5所述的方法,其特征在于,所述消息中间件将所述持久化的消息按照预定顺序发送之前,还包括:
消息中间件提取缓存中存有的所述消息消费者接收不成功的消息,并持久化该消息;
或,
消息中间件请求消息发送者再次发送所述消息消费者接收不成功的消息,并在接收消息发送者再次发送的消息之后持久化该消息。
7.如权利要求1所述的方法,其特征在于,所述消息中间件将所述持久化的消息按照预定的顺序发送,包括:
在首次接收到消息消费者反馈的错误信息后达到预定时长时按照预定顺序发送,
或,
在首次接收到消息消费者反馈的错误信息后,持久化处理的消息数量达到预定数目时,按照预定的顺序发送。
8.如权利要求1所述的方法,其特征在于,所述方法之后还包括:
在所述持久化的消息发送成功后删除所述错误信息表中的所述属性信息。
9.一种消息传递系统,其特征在于,包括:
消息发送者,包括至少一个消息生产者,所述消息生产者用于发布不同属性的消息;
消息中间件,用于接收所述发布的消息,并提取该消息在指定属性上的属性信息;还用于比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;当比较结果为不相同时,将所述的接收的消息传递至消息消费者;当比较结果为相同时,持久化该接收的消息;还用于将所述持久化的消息按照预定的顺序发送;
消息消费者,用于接收消息中间件发来的消息。
10.一种消息中间件,其特征在于,包括:
消息接收单元,用于接收消息发送者发布的消息;
属性提取单元,用于从消息接收单元接收的消息中提取该消息在指定属性上的属性信息;
错误信息表,用于保存预置的属性信息;
比较单元,用于比较所述提取的属性信息与错误信息表中保存的预置属性信息是否相同;
第一发送单元,用于当比较单元比较结果为不相同时,将所述的接收的消息传递至消息消费者;
持久化单元,用于当比较单元比较结果为相同时,持久化所述属性信息相同的消息;
第二发送单元,用于将所述持久化的消息按照预定的顺序发送所述持久化单元中的消息。
11.如权利要求10所述的消息中间件,其特征在于,所述属性信息包括消息对应的主体信息。
12.如权利要求11所述的消息中间件,其特征在于,所述主体信息包括消息的生产者信息、消息的消费者和消息的生产者信息与消息的消费者信息的结合中的至少一种。
13.如权利要求10所述的消息中间件,其特征在于,所述属性信息位于消息的属性字段中。
14.如权利要求10所述的消息中间件,其特征在于,还包括:
反馈信息接收单元,用于接收消息消费者反馈的接收不成功消息;
属性增加单元,用于增加所述反馈信息接收单元接收的接收不成功的消息对应的主体信息。
15.如权利要求14所述的消息中间件,其特征在于,还包括:
信息提取单元,用于提取缓存中存有的所述消息消费者接收不成功的消息,并存入所述持久化单元。
16.如权利要求14所述的消息中间件,其特征在于,还包括:
请求单元,用于向消息生产者发送请求,所述请求包括请求发送所述消息消费者接收不成功的消息;还用于将消息生产者再次发送的消息保存到所述持久化单元。
17.如权利要求10所述的消息中间件,其特征在于,还包括:
计时单元,用于在消息中间件首次接收到消息消费者反馈的错误信息后开始计时,
相应的,所述第二发送单元在计时单元计时达到预定时长时按照预定的顺序发送所述持久化单元中的消息。
18.如权利要求10所述的消息中间件,其特征在于,还包括:
计数单元,用于在首次接收到消息消费者反馈的错误信息后对持久化单元处理的消息的数量计数,
相应的,所述第二发送单元在计数单元计数达到预定数目时按照预定的顺序发送所述持久化单元中的消息。
19.如权利要求10所述的消息中间件,其特征在于,还包括:
删除单元,用于在所述第二发送单元将所述持久化单元中的所述消息发送成功后,删除所述错误信息表中的相应属性信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410128537.6A CN104980450B (zh) | 2014-04-01 | 2014-04-01 | 一种消息传递方法和系统及消息处理设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410128537.6A CN104980450B (zh) | 2014-04-01 | 2014-04-01 | 一种消息传递方法和系统及消息处理设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104980450A true CN104980450A (zh) | 2015-10-14 |
CN104980450B CN104980450B (zh) | 2018-08-24 |
Family
ID=54276553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410128537.6A Active CN104980450B (zh) | 2014-04-01 | 2014-04-01 | 一种消息传递方法和系统及消息处理设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104980450B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677494A (zh) * | 2016-02-01 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 一种消息分发的方法和装置 |
CN105743979A (zh) * | 2016-02-02 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 一种数据通信的系统和方法 |
CN106453136A (zh) * | 2016-09-05 | 2017-02-22 | 深圳前海微众银行股份有限公司 | 建立消息队列的方法和装置 |
CN106648444A (zh) * | 2015-10-30 | 2017-05-10 | 大唐移动通信设备有限公司 | 一种消息处理方法和设备 |
CN107395486A (zh) * | 2017-04-18 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 数据通信方法、装置、系统及消息中间件 |
CN107835203A (zh) * | 2017-08-09 | 2018-03-23 | 平安壹钱包电子商务有限公司 | 消息分组投递的方法、装置、存储介质及终端 |
CN108170545A (zh) * | 2018-01-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种基于消息中间件的消息传输方法和装置 |
CN109274466A (zh) * | 2018-08-07 | 2019-01-25 | 中国人民银行清算总中心 | 一种中间件报文传输方法及系统 |
CN109324725A (zh) * | 2018-08-21 | 2019-02-12 | 苏州达家迎信息技术有限公司 | 一种提示信息生成方法、装置、设备及存储介质 |
CN110572461A (zh) * | 2019-09-11 | 2019-12-13 | 宝付网络科技(上海)有限公司 | 一种基于生产与消费模式的中间服务系统 |
CN113259195A (zh) * | 2021-05-10 | 2021-08-13 | 中国人民解放军63660部队 | 一种消息中间件性能测试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100251262A1 (en) * | 2009-03-31 | 2010-09-30 | Software Ag | Systems and/or methods for standards-based messaging |
US20100333111A1 (en) * | 2009-06-29 | 2010-12-30 | Software Ag | Systems and/or methods for policy-based JMS broker clustering |
US20110107136A1 (en) * | 2009-10-30 | 2011-05-05 | Verizon Patent And Licensing, Inc. | Fault Surveillance and Automatic Fail-Over Processing in Broker-Based Messaging Systems and Methods |
CN102279837A (zh) * | 2010-03-31 | 2011-12-14 | 佳能株式会社 | 通信处理装置及通信处理方法 |
-
2014
- 2014-04-01 CN CN201410128537.6A patent/CN104980450B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100251262A1 (en) * | 2009-03-31 | 2010-09-30 | Software Ag | Systems and/or methods for standards-based messaging |
CN101854351A (zh) * | 2009-03-31 | 2010-10-06 | 软件Ag公司 | 用于基于标准的消息传输的系统和/或方法 |
US20100333111A1 (en) * | 2009-06-29 | 2010-12-30 | Software Ag | Systems and/or methods for policy-based JMS broker clustering |
US20110107136A1 (en) * | 2009-10-30 | 2011-05-05 | Verizon Patent And Licensing, Inc. | Fault Surveillance and Automatic Fail-Over Processing in Broker-Based Messaging Systems and Methods |
CN102279837A (zh) * | 2010-03-31 | 2011-12-14 | 佳能株式会社 | 通信处理装置及通信处理方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648444A (zh) * | 2015-10-30 | 2017-05-10 | 大唐移动通信设备有限公司 | 一种消息处理方法和设备 |
CN106648444B (zh) * | 2015-10-30 | 2019-06-28 | 大唐移动通信设备有限公司 | 一种消息处理方法和设备 |
CN105677494A (zh) * | 2016-02-01 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 一种消息分发的方法和装置 |
CN105743979B (zh) * | 2016-02-02 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 一种数据通信的系统和方法 |
CN105743979A (zh) * | 2016-02-02 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 一种数据通信的系统和方法 |
CN106453136A (zh) * | 2016-09-05 | 2017-02-22 | 深圳前海微众银行股份有限公司 | 建立消息队列的方法和装置 |
CN106453136B (zh) * | 2016-09-05 | 2019-06-25 | 深圳前海微众银行股份有限公司 | 建立消息队列的方法和装置 |
CN107395486A (zh) * | 2017-04-18 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 数据通信方法、装置、系统及消息中间件 |
CN107835203A (zh) * | 2017-08-09 | 2018-03-23 | 平安壹钱包电子商务有限公司 | 消息分组投递的方法、装置、存储介质及终端 |
CN107835203B (zh) * | 2017-08-09 | 2020-07-10 | 平安壹钱包电子商务有限公司 | 消息分组投递的方法、装置、存储介质及终端 |
CN108170545A (zh) * | 2018-01-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种基于消息中间件的消息传输方法和装置 |
CN109274466A (zh) * | 2018-08-07 | 2019-01-25 | 中国人民银行清算总中心 | 一种中间件报文传输方法及系统 |
CN109274466B (zh) * | 2018-08-07 | 2022-02-22 | 中国人民银行清算总中心 | 一种中间件报文传输方法及系统 |
CN109324725A (zh) * | 2018-08-21 | 2019-02-12 | 苏州达家迎信息技术有限公司 | 一种提示信息生成方法、装置、设备及存储介质 |
CN109324725B (zh) * | 2018-08-21 | 2021-07-09 | 苏州达家迎信息技术有限公司 | 一种提示信息生成方法、装置、设备及存储介质 |
CN110572461A (zh) * | 2019-09-11 | 2019-12-13 | 宝付网络科技(上海)有限公司 | 一种基于生产与消费模式的中间服务系统 |
CN113259195A (zh) * | 2021-05-10 | 2021-08-13 | 中国人民解放军63660部队 | 一种消息中间件性能测试方法 |
CN113259195B (zh) * | 2021-05-10 | 2022-07-05 | 中国人民解放军63660部队 | 一种消息中间件性能测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104980450B (zh) | 2018-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104980450A (zh) | 一种消息传递方法和系统及消息中间件 | |
CN106953718A (zh) | 一种码块的重传进程的实现方法、装置及设备 | |
KR102365796B1 (ko) | 가상 물품을 할당하기 위한 방법과 시스템 | |
CN111030784A (zh) | 一种信息同步方法和装置 | |
CN109660451A (zh) | 一种发送消息的方法、装置及消息收发系统 | |
CN103220206A (zh) | 一种消息发送方法、装置和一种消息接收方法、装置 | |
CN105580334A (zh) | 一种数据传输方法、终端和服务器 | |
CN103780363A (zh) | 消息再传输装置及方法 | |
CN113391979A (zh) | 监控数据展示的处理方法、设备、系统及存储介质 | |
CN104618432A (zh) | 一种事件发送与接收的处理方法和处理系统 | |
CN101106550A (zh) | 大尺寸消息的发送方法、接收方法及传输系统 | |
CN110389976B (zh) | 一种多接口数据的调度方法和装置 | |
KR20170010300A (ko) | M2m 시스템에서 요청 메시지를 처리하는 방법 및 그 장치 | |
CN103647622A (zh) | 一种实现跨机房数据传输的方法、装置和系统 | |
US20200170078A1 (en) | Method for optimizing per message type data exchange between connected objects | |
CN114793232B (zh) | 业务处理方法、装置、电子设备及存储介质 | |
CN102137346A (zh) | 多媒体消息业务处理方法和相关设备以及系统 | |
CN107872479B (zh) | 云管理平台与控制器集成方法和系统以及相关模块 | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
CN112511636B (zh) | 数据传输系统、方法、装置、计算机设备及存储介质 | |
CN104022948A (zh) | TypeX报文传输系统及方法 | |
CN104219138A (zh) | 智能终端交互信息修正方法 | |
CN112181672B (zh) | 区块链数据的处理方法、区块链系统及计算机存储介质 | |
CN112732660A (zh) | 干预式文件传输方法、装置及系统 | |
CN105704185B (zh) | 资源转移方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |