消息中间件及消息传输方法与流程

文档序号:17640144发布日期:2019-05-11 00:37阅读:278来源:国知局
消息中间件及消息传输方法与流程

本发明涉及轨道交通技术领域,尤其涉及一种消息中间件及消息传输方法。



背景技术:

自动售检票系统(automaticfarecollectionsystem,afc)是一种由计算机集中控制的自动售票(包括半自动售票)、自动检票以及自动收费和统计的封闭式自动化网络系统。afc的结构进行了层次划分,共分为车票、车站终端设备、车站中心系统、线路中心计算机系统、清分系统五个层次。在afc的应用领域,从业务层面,afc的总体需求及分层架构上是基本一致的。但业界并未形成一致的消息传输标准,一般都是各个地域、各个城市,均制定了自己的afc业务规范(消息传输标准),包括网络连接、消息结构、时序定义等。而且,各个afc的设计方/供应商,会根据各地方的消息传输标准来实现各自的通信模型,而且均较保守,技术细节没有公开。

这种方式下,自动售检票系统的消息传输标准化程度不高,兼容效果和可扩展性不佳。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种消息中间件,能够有效提升自动售检票系统的消息传输标准化程度,提升兼容效果和可扩展性。

本发明的另一个目的在于提出一种消息传输方法。

为达到上述目的,本发明第一方面实施例提出的消息中间件,应用于自动售检票系统,所述消息中间件包括jms消息服务组件、消息接口、时序接口,以及消息管理器,其中,所述jms消息服务组件,用于接收上位机发送的消息业务请求,并调用所述时序接口将所述消息业务请求添加至所述消息管理器中的时序队列中;所述消息管理器,用于管理所述时序队列,所述时序队列中包括多个时序,每个时序用于描述一个上位机发送的所述消息业务请求,所述消息管理器在所述消息业务请求对应的消息线程中处理所述消息业务请求,并根据处理结果生成所述消息业务请求的响应消息;所述jms消息服务组件,还用于调用所述消息接口对所述响应消息进行封装,并将封装后的响应消息提供至所述消息业务请求对应的下位机。

本发明第一方面实施例提出的消息中间件,通过jms消息服务组件,接收上位机发送的消息业务请求,并调用时序接口将消息业务请求添加至消息管理器中的时序队列中;消息管理器,管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,消息管理器在消息业务请求对应的消息线程中处理消息业务请求,并根据处理结果生成消息业务请求的响应消息;jms消息服务组件,调用消息接口对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机,能够有效提升自动售检票系统的消息传输标准化程度,提升兼容效果和可扩展性。

为达到上述目的,本发明第二方面实施例提出的消息传输方法,应用于自动售检票系统,包括:接收上位机发送的消息业务请求,并调用时序接口将所述消息业务请求添加至消息管理器中的时序队列中;管理所述时序队列,所述时序队列中包括多个时序,每个时序用于描述一个上位机发送的所述消息业务请求,并在所述消息业务请求对应的消息线程中处理所述消息业务请求,以及根据处理结果生成所述消息业务请求的响应消息;调用消息接口对所述响应消息进行封装,并将封装后的响应消息提供至所述消息业务请求对应的下位机。

本发明第二方面实施例提出的消息传输方法,通过接收上位机发送的消息业务请求,并调用时序接口将消息业务请求添加至消息管理器中的时序队列中;管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,并在消息业务请求对应的消息线程中处理消息业务请求,以及根据处理结果生成消息业务请求的响应消息;调用消息接口对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机,能够有效提升自动售检票系统的消息传输标准化程度,提升兼容效果和可扩展性。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明一实施例提出的消息中间件的结构示意图;

图2为本发明实施例中afc通信模型层次示意图;

图3为本发明实施例中时序静态结构图;

图4为本发明实施例中消息中间件对应的类结构图;

图5为本发明实施例中一种接收序列图;

图6为本发明实施例中一种发送序列图;

图7是本发明一实施例提出的消息传输方法的流程示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。

图1是本发明一实施例提出的消息中间件的结构示意图。

消息中间件应用于自动售检票系统中。

afc是一种由计算机集中控制的自动售票(包括半自动售票)、自动检票以及自动收费和统计的封闭式自动化网络系统。afc的结构进行了层次划分,共分为车票、车站终端设备、车站中心系统、线路中心计算机系统、清分系统五个层次。在afc的应用领域,从业务层面,afc的总体需求及分层架构上是基本一致的。但业界并未形成一致的消息传输标准,一般都是各个地域、各个城市,均制定了自己的afc业务规范(消息传输标准),包括网络连接、消息结构、时序定义等。而且,各个afc的设计方/供应商,会根据各地方的消息传输标准来实现各自的通信模型,而且均较保守,技术细节没有公开。

这种方式下,自动售检票系统afc的消息传输标准化程度不高,兼容效果和可扩展性不佳。

为了解决上述技术问题,本发明实施例中提供一种消息中间件,消息中间件包括jms消息服务组件、消息接口、时序接口,以及消息管理器,其中,jms消息服务组件,用于接收上位机发送的消息业务请求,并调用时序接口将消息业务请求添加至消息管理器中的时序队列中;消息管理器,用于管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,消息管理器在消息业务请求对应的消息线程中处理消息业务请求,并根据处理结果生成消息业务请求的响应消息;jms消息服务组件,还用于调用消息接口对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机,能够有效提升自动售检票系统afc的消息传输标准化程度,提升兼容效果和可扩展性。

参见图1,该消息中间件10包括:java消息服务(javamessageservice,jms)消息服务组件101、消息接口102、时序接口103,以及消息管理器104,其中,

jms消息服务组件101,用于接收上位机发送的消息业务请求,并调用时序接口103将消息业务请求添加至消息管理器104中的时序队列中。

本发明实施例在具体执行的过程中,参见图2,图2为本发明实施例中afc通信模型层次示意图,其中,afc下位业务系统和afc上位业务系统之间的消息传输涉及多个层面(包括:时序支持层面21、消息管理层面22,以及连接管理层面23、tcp/ip网络层面),各层面提供了afc系统中的基本的消息处理接口,本发明实施例中所提供的消息中间件10涉及以下几个层面的设计,时序支持层面21、消息管理层面22,以及连接管理层面23。

其中的jms消息服务组件101,即java消息服务(javamessageservice,jms)组件,该组件中所包含的应用程序编程接口api,是java平台中关于面向消息中间件10的api,该应用程序编程接口api可以用于在两个应用程序之间,或者在两个分布式系统之间进行消息的传输,并支持异步通信,该jms消息服务组件101可以采用当前业内比较成熟的实现方案,例如,activemq,rabbitmq,rocketmq等。

本发明实施例中的jms消息服务组件101,对上述java平台中关于面向消息中间件10的api进行了封装,能够方便替换各家的mq解决方案,并适用于本发明的消息中间件10框架。

本发明实施例中的时序接口103派生的简单时序类和组合时序类,还支持时序的扩展,使得用户可以通过继承该时序接口103来扩展实现个性化的时序类型,以满足个性化的业务需求。

本发明实施例中的消息接口102,用于对通信消息进行封装,具体封装消息头、消息id、消息体、校验算法、加密算法等,另外,还提供通信消息序列化和反序列化方法。本发明实施例中的消息格式可以采用json字符串,是当前网络消息的常用格式,简单易懂,便于存储、传输和解释,并支持消息体的扩展,使得用户可以在消息框架基础上定义满足个性化需求的消息体,实现多样化业务。

可选地,一些实施例中,本发明实施例为了实现时序支持层面的设计,时序接口103派生简单时序类和组合时序类,简单时序类派生单向发起者时序类、双向发起者时序类,以及双向响应者时序类,组合时序类派生同步组合时序类和异步组合时序类,其中,时序接口103将各时序类提供至上位机;jms消息服务组件101,接收上位机基于实际应用中的业务需求调用目标时序类所生成的消息业务请求,并将消息业务请求添加至消息管理器104中与目标时序类对应的时序队列中。

消息管理器104,用于管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,消息管理器104在消息业务请求对应的消息线程中处理消息业务请求,并根据处理结果生成消息业务请求的响应消息。

参见图3,图3为本发明实施例中时序静态结构图,该时序静态结构图描述各时序类之间的静态继承关系。

从图3中可以看出,时序类从时序接口isequence派生简单时序类(simplesequence)和组合时序类(groupsequence)。组合时序类继承isequence,同时又聚焦了isequence的派生类,因为组合时序是若干isequence派生类的组合。简单时序派生单向发起者时序(onewaydatainitsequence),由单向发起者时序派生双向发起者时序(twowaydatainitsequence)和双向响应者时序(twowaydatarespondersequence),组合时序派生两个子类:同步组合时序和异步组合时序。

本发明实施例在具体执行的过程中,参见图4,图4为本发明实施例中消息中间件对应的类结构图,其中,该消息中间件在软件层面包括:消息管理器(messagemanager)类、消息(message)类、时序(sequence)类、会话类(session)、生产者类(producer),以及消费者类(consumer)。其中,

消息管理器(messagemanager)类,为消息中间件的核心类,它的主要属性有:sequences,为由类型为时序(sequence)的元素组成的队列,上层业务通过构造时序来处理消息业务请求,该时序添加至消息管理器的时序队列后,消息管理器在消息线程中处理时序,mqhandle:消息队列处理对象,封装jms消息组件的消息处理对象,消息管理器通过mqhandle对象调用jms消息组件收发消息业务请求。消息管理器(messagemanager)类的主要方法有:setmqproperties(设置mq属性)方法:初始化mqhandle对象属性的方法。sendmessage(发送消息)方法:mqhandle对象通过sendmessage方法来发送消息,sendmessage方法调用mqhandle确定合适的生产者发送消息。onsequencereceived(触发生成序列)方法:上层业务模块需要运行时序时会发送信号来触发onsequencereceived方法。onsequencereceived方法携带参数:需要执行的时序。signal_msgreceived(信号接收)方法:在消息管理器收到对端消息业务请求之后,若没有mqhandle对象处理该消息业务请求,则把该消息业务请求转发到业务处理层。

消息(message)类:消息管理器的关联类,封装核心数据——消息。消息类保包含两个主要属性:消息头(messagehead)和消息体(messagebody)。消息头包含消息长度、传输类型、协议版本号、消息id、加密方法、校验等属性,是消息传输过程中的保障字段。消息体保存消息数据。消息类提供了序列化方法和反序列化方法,用于便捷地将消息转换为json字符串格式,或者,经由json字符串来构造消息对象。消息管理器接收或者发送消息业务请求时,通过message对象来封装、传递、处理消息。

时序(sequence)类:由消息构成的,代表业务逻辑的核心类。若干消息按照一定秩序组成了时序,时序类释放了时序接口(isequence接口),该接口主要有以下方法:getstate(确定状态)/setstate(设置状态)方法:设置/获取时序状态的方法。时序具有状态,是一个状态机。startsequence(启动时序)方法:该方法启动时序,调用该方法后,时序状态机进入第一个状态;stopsequence(停止时序)方法:该方法停止该时序,调用该方法后,时序状态设为停止,状态机结束。isexpectedmessage(目标消息确认方法)方法:该方法携带有传入的message参数。该方法判断该消息是否是当前时序正在等待的下一个消息。如果是则处理该消息,否则,不处理。handlemessage(生成消息句柄)方法:该方法与上面的isexpectedmessage对应,signal_onsequencestatechanged(时序状态切换)方法:时序类释放的接口,当时序状态产生变化时,触发该接口,该接口发送信号。

会话类(session):jms规范中定义的会话类,代表一个连接之上进行的会话,会话对象产生生产者和消费者。

生产者类(producer):封装了jms规则中定义的生产者,消息管理器依据消息业务请求所对应的业务需求构造生产者,并调用生产者提供的send方法来发送消息,生产者由session产生。

消费者类(consumer):封装了jms规范中定义的消费者,消费者对象在消息管理器初始化时通过session对象创建,并指定它所要监听的消息业务请求,当监听到消息业务请求时,触发消费者对象的onmessage方法。

jms消息服务组件101,还用于调用消息接口102对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机。

可选地,一些实施例中,本发明实施例中提供了一中消息中间件10的时序处理过程,其中,单向发起者时序类包括:单向接收者时序类,在目标时序类为单向接收者时序类时,消息管理器104直接将消息业务请求转发至自动售检票系统afc系统的上层应用,经由上层应用对消息业务请求进行处理以生成响应消息。

作为一种示例,参见图5,图5为本发明实施例中一种接收序列图,其中,图5所示为目标时序类为单向接收者时序类,消息管理器51接收activemq52发送的消息业务请求,直接将消息业务请求转发至自动售检票系统afc系统的上层应用app53,经由上层应用app53对消息业务请求进行处理以生成响应消息。

可选地,一些实施例中,本发明实施例中提供了另一种消息中间件10的时序处理过程,其中,单向发起者时序类包括:单向发送者时序类,消息管理器104封装java消息服务中的生产者类,在目标时序类为单向发送者时序类时,消息管理器104直接调用生产者类对应的消息发送方法,并基于对应的消息发送方法对待发送业务消息进行发送处理。

作为一种示例,参见图6,图6为本发明实施例中一种发送序列图,其中,图6所示为目标时序类为单向发送者时序类,该发送序列图从发送者的角度来描述时序,首先,需要发送消息的上层应用app61,构造一个单向发送者时序类62的对象,然后调用对象发送方法(postsequence方法)把该单向发送者时序类62的对象发送至消息管理器63,触发消息管理器63(onsequencereceived方法),在onsequencereceived方法中,消息管理器把该时序加入时序队列,并调用其startsequence方法启动时序,在单向发送者时序类62的对象的startsequence方法中,调用生产者类对应的消息发送方法把对消息进行发送。

可选地,一些实施例中,本发明实施例中提供了另一种消息中间件10的时序处理过程,其中,消息管理器104封装java消息服务中的消费者类,在目标时序类为双向发起者时序类时,消息管理器104在对消息业务请求进行发送处理之后,经由消费者类对应的消息接收方法接收消息业务请求对应的响应消息,并遍历时序队列,以触发经由与发送消息业务请求的上层应用之间的交互对响应消息进行处理。

本发明实施例在具体执行的过程中,消息管理器104封装java消息服务中的消费者类,在目标时序类为双向发起者时序类时,消息管理器104在对消息业务请求进行发送处理之后,还经由消费者类对应的onmessage方法接收到来自对端的消息,而后,遍历时序队列,并调用每一个时序对象的isexpectedmessage方法,若确定某个时序对象的isexpectedmessage方法调用返回为真,则该消息为该时序等待的消息,进一步触发调用该时序的handlemessage方法处理消息,在handlemessage方法中,进一步与上层应用交互处理消息。

可选地,一些实施例中,本发明实施例中提供了另一种消息中间件10的时序处理过程,其中,在目标时序类为双向响应者时序类时,消息管理器104还用于接收上层应用对消息业务请求进行处理以生成的响应消息,并根据消息业务请求的标识和响应消息生成目标反馈消息,以及,将目标反馈消息反馈至发送消息业务请求的上位机。

本发明实施例在具体执行的过程中,在目标时序类为双向响应者时序类时,可以将其视为单向接收者时序类的基础上,增加一个反馈消息,单向接收者时序类是只接收消息业务请求,而双向响应者时序类在接收到消息业务请求后,对消息业务请求在本地进行处理,生成响应消息,并构造一个twowaydatarespondersequence(双向响应者时序类)对象,并根据消息业务请求的标识和响应消息生成目标反馈消息以基于该目标反馈消息进行反馈。

可选地,一些实施例中,本发明实施例中提供了另一种消息中间件10的时序处理过程,其中,在目标时序类为组合时序类时,消息管理器104中配置状态机管理模块,其中,消息管理器104,根据实际业务需求,确定消息业务请求所需要调度的子时序,并经由状态机管理模块以及各子时序的状态,对各子时序进行调度控制。

本发明实施例在具体执行的过程中,在目标时序类为组合时序类时,组合时序类提供startsequence、isexpectedmessage、handlemessage等接口,在消息管理器104中统一调度。组合时序类以业务应用需求为基础,可以在消息管理器104中配置状态机管理模块,经由状态机管理模块以及各子时序的状态,对各子时序进行调度控制。

本发明实施例中,通过使得该消息中间件10封装消息、时序、连接等通信节点,使各afc厂商可以不涉及消息具体收发细节,仅仅关注业务实现逻辑上,提供了较好的封装性,通过使得该消息中间件10释放时序接口103,用户可以基于时序接口103派生,各afc厂商可以根据各自实际使用需求,在时序接口103基础上扩展自己的时序类,具有良好的可扩展性。通过使得该消息中间件10依据jms标准封装了消息队列接口,afc厂商可以依据业务状况选择集成合适的消息队列产品,有良好的灵活性。通过上述使得消息中间件10封装各种应用场景下的时序处理过程,并以json字符串作为消息传输格式,具有良好的通用性。另外,本发明采用面向对象的方法来进行设计,具有良好的可读性、可维护性和可扩展性,模块间高聚合低耦合,层次清楚,便于实现和复用。

本实施例中,通过jms消息服务组件,接收上位机发送的消息业务请求,并调用时序接口将消息业务请求添加至消息管理器中的时序队列中;消息管理器,管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,消息管理器在消息业务请求对应的消息线程中处理消息业务请求,并根据处理结果生成消息业务请求的响应消息;jms消息服务组件,调用消息接口对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机,能够有效提升自动售检票系统afc的消息传输标准化程度,提升兼容效果和可扩展性。

图7是本发明一实施例提出的消息传输方法的流程示意图。

应用于自动售检票系统。

参见图7,该方法包括:

s701:接收上位机发送的消息业务请求,并调用时序接口将消息业务请求添加至消息管理器中的时序队列中。

s702:管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,并在消息业务请求对应的消息线程中处理消息业务请求,以及根据处理结果生成消息业务请求的响应消息。

s703:调用消息接口对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机。

可选地,一些实施例中,时序接口派生简单时序类和组合时序类,简单时序类派生单向发起者时序类、双向发起者时序类,以及双向响应者时序类,组合时序类派生同步组合时序类和异步组合时序类,其中,

将各时序类提供至上位机;

接收上位机基于实际应用中的业务需求调用目标时序类所生成的消息业务请求,并将消息业务请求添加至消息管理器中与目标时序类对应的时序队列中。

可选地,一些实施例中,单向发起者时序类包括:单向接收者时序类,在目标时序类为单向接收者时序类时,直接将消息业务请求转发至自动售检票系统afc系统的上层应用,经由上层应用对消息业务请求进行处理以生成响应消息。

可选地,一些实施例中,单向发起者时序类包括:单向发送者时序类,消息管理器封装java消息服务中的生产者类,在目标时序类为单向发送者时序类时,直接调用生产者类对应的消息发送方法,并基于对应的消息发送方法对待发送业务消息进行发送处理。

可选地,一些实施例中,消息管理器封装java消息服务中的消费者类,在目标时序类为双向发起者时序类时,在对消息业务请求进行发送处理之后,经由消费者类对应的消息接收方法接收消息业务请求对应的响应消息,并遍历时序队列,以触发经由与发送消息业务请求的上层应用之间的交互对响应消息进行处理。

可选地,一些实施例中,在目标时序类为双向响应者时序类时,接收上层应用对消息业务请求进行处理以生成的响应消息,并根据消息业务请求的标识和响应消息生成目标反馈消息,以及,将目标反馈消息反馈至发送消息业务请求的上位机。

可选地,一些实施例中,在目标时序类为组合时序类时,其中,

根据实际业务需求,确定消息业务请求所需要调度的子时序,并经由各子时序的状态,对各子时序进行调度控制。

需要说明的是,前述图1-图6实施例中对消息中间件10实施例的解释说明也适用于该实施例的消息传输方法,其实现原理类似,此处不再赘述。

本实施例中,通过接收上位机发送的消息业务请求,并调用时序接口将消息业务请求添加至消息管理器中的时序队列中;管理时序队列,时序队列中包括多个时序,每个时序用于描述一个上位机发送的消息业务请求,并在消息业务请求对应的消息线程中处理消息业务请求,以及根据处理结果生成消息业务请求的响应消息;调用消息接口对响应消息进行封装,并将封装后的响应消息提供至消息业务请求对应的下位机,能够有效提升自动售检票系统afc的消息传输标准化程度,提升兼容效果和可扩展性。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1