CN108063803B - 基于分布式订阅发布消息系统的消息管理方法及系统 - Google Patents

基于分布式订阅发布消息系统的消息管理方法及系统 Download PDF

Info

Publication number
CN108063803B
CN108063803B CN201711259961.4A CN201711259961A CN108063803B CN 108063803 B CN108063803 B CN 108063803B CN 201711259961 A CN201711259961 A CN 201711259961A CN 108063803 B CN108063803 B CN 108063803B
Authority
CN
China
Prior art keywords
message
uploaded
management center
producer
rec
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.)
Active
Application number
CN201711259961.4A
Other languages
English (en)
Other versions
CN108063803A (zh
Inventor
宋亚楠
司德谭
邱楠
王昊奋
程谦
邹创华
陈甜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Gowild Robotics Co ltd
Original Assignee
Shenzhen Gowild Robotics Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Gowild Robotics Co ltd filed Critical Shenzhen Gowild Robotics Co ltd
Priority to CN201711259961.4A priority Critical patent/CN108063803B/zh
Publication of CN108063803A publication Critical patent/CN108063803A/zh
Application granted granted Critical
Publication of CN108063803B publication Critical patent/CN108063803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供的基于分布式订阅发布消息系统的消息管理方法及系统,方法为:将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2;将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。本发明通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。

Description

基于分布式订阅发布消息系统的消息管理方法及系统
技术领域
本发明涉及数据处理领域,尤其涉及基于分布式订阅发布消息系统的消息管理方法及系统领域。
背景技术
随着联网设备的增多、“万物互联”概念的提出和普及,用户通过各种媒介和界面与服务器发生信息交互的频率也越来越高。云服务器和分布式存储概念的提出和发展,也突出了在各种联网设备与服务器之间进行信息传递的重要性。
联网设备与服务器之间的信息传递需要具有容错率、可靠性、可延拓性、并发性等。而用户与联网设备之间通过触摸、语音、文字等方式进行交互的时候,联网设备(客户端)与服务器之间的信息交互又具有其特点与独特的要求。
现有的订阅发布消息系统的典型代表是kafka,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费,因此,Kafka目前在服务器领域被广泛应用。
但现有的订阅发布消息系统,当生产者的消息没有正确发送到管理中心的时候,缺乏异常处理,不能保证消息从生产者成功上传至管理中心。
发明内容
针对上述技术问题,本发明提供一种基于分布式订阅发布消息系统的消息管理方法及系统,通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
为解决上述技术问题,本发明提供的技术方案是:
第一方面,本发明提供一种基于分布式订阅发布消息系统的消息管理方法,包括:
步骤S1,将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2
步骤S2,将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供的一种基于分布式订阅发布消息系统的消息管理方法,其技术方案为:将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2;将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供的一种基于分布式订阅发布消息系统的消息管理方法,通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
进一步地,所述步骤S2,具体为:
所述生产者将所述MSG_ID设置为随机值,将所述REC_ID设置为n,所述n表示所述待上传消息第n次发送;
所述管理中心第一次收到所述待上传消息后,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并将收到的所述待上传消息中MSG_ID+REC_ID+CRC2回复到所述生产者;
所述生产者将所述MSG_ID加一,保持所述REC_ID不变,并将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;
根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,如果出现异常,所述生产者重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
进一步地,还包括:
在所述预先定义的格式中增加消息长度标识符;
所述管理中心在设置offset值时,结合所述消息长度的大小确认所述offset值,其中所述offset值作为所述待上传消息中的每条消息的唯一序列号;
根据所述offset值,消费者从所述管理中心获取消息。
通过上述offset值的设置,确保消费者每次从所述管理中心获取消息时是从消息头部开始获取。
进一步地,还包括:
在所述预先定义的格式中增加优先级标识符URG;
当所述管理中心收到所述待上传消息时,根据所述URG判断所述待上传消息中每条消息的优先级;
根据所述每条消息的优先级,消费者选择处理所述待上传消息中每条消息的顺序。
进一步地,还包括:
在所述预先定义的格式中增加消息处理状态标识符STATE,其中,所述STATE分为多个编号,每个编号代表不同的消息处理状态;
所述生产者将所述STATE初始化为0,在消费者处理所述待上传消息中的某条消息时,通过所述STATE获取所述某条消息的消息处理状态。
第二方面,本发明提供一种基于分布式订阅发布消息系统的消息管理系统,包括:
消息格式定义模块,用于将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2
消息上传模块,用于将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供的一种基于分布式订阅发布消息系统的消息管理系统,其技术方案为:通过消息格式定义模块,将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2;通过消息上传模块,将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供一种基于分布式订阅发布消息系统的消息管理系统,通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
进一步地,所述消息上传模块,具体用于:
所述生产者将所述MSG_ID设置为随机值,将所述REC_ID设置为n,所述n表示所述待上传消息第n次发送;
所述管理中心第一次收到所述待上传消息后,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并将收到的所述待上传消息中MSG_ID+REC_ID+CRC2回复到所述生产者;
所述生产者将所述MSG_ID加一,保持所述REC_ID不变,并将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;
根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,如果出现异常,所述生产者重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
进一步地,还包括:
消息长度标识符增加模块,具体用于:
在所述预先定义的格式中增加消息长度标识符;
所述管理中心在设置offset值时,结合所述消息长度的大小确认所述offset值,其中所述offset值作为所述待上传消息中的每条消息的唯一序列号;
根据所述offset值,消费者从所述管理中心获取消息。
进一步地,还包括:
优先级标识符增加模块,具体用于:
在所述预先定义的格式中增加优先级标识符URG;
当所述管理中心收到所述待上传消息时,根据所述URG判断所述待上传消息中每条消息的优先级;
根据所述每条消息的优先级,消费者选择处理所述待上传消息中每条消息的顺序。
进一步地,还包括:
消息处理状态标识符增加模块,具体用于:
在所述预先定义的格式中增加消息处理状态标识符STATE,其中,所述STATE分为多个编号,每个编号代表不同的消息处理状态;
所述生产者将所述STATE初始化为0,在消费者处理所述待上传消息中的某条消息时,通过所述STATE获取所述某条消息的消息处理状态。
与现有技术相比,本申请提供的技术方案的技术效果为:
1、通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
2、通过在消息格式中增加消息长度标识符length,保证每次消费者都可以正确地从消息头部开始获取到消息。
3、通过在消息格式中增加优先级标识符URG,可在人机交互的过程中,按照优先级有线处理一些需要紧急处理的信息。
4、通过在消息格式中增加消息处理状态标识符STATE,可实现在人机交互过程中,便于消费者知道每条消息的处理状态。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
图1示出了本发明实施例所提供的一种基于分布式订阅发布消息系统的消息管理方法的流程图;
图2示出了本发明实施例所提供的一种基于分布式订阅发布消息系统的消息管理系统的示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。
基于本发明提供的技术方案,对本发明中的关键词进行解释说明:
生产者:生产者负责产生消息,并将消息发送到管理中心。
消费者:从管理中心获取消息进行处理。
管理中心:负责消息的统一管理。
实施例一
第一方面,图1示出了本发明实施例所提供的一种基于分布式订阅发布消息系统的消息管理方法的流程图;如图1所示,实施例一提供的一种基于分布式订阅发布消息系统的消息管理方法,包括:
步骤S1,将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2
步骤S2,将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供的一种基于分布式订阅发布消息系统的消息管理方法,其技术方案为:将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2;将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供的一种基于分布式订阅发布消息系统的消息管理方法,通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
基于上述方案,生产者成功将消息上传至管理中心,消费者可从管理中心中订阅自己感兴趣的消息数据。
优选地,所述步骤S2,具体为:
所述生产者将所述MSG_ID设置为随机值,将所述REC_ID设置为n,所述n表示所述待上传消息第n次发送;
所述管理中心第一次收到所述待上传消息后,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并将收到的所述待上传消息中MSG_ID+REC_ID+CRC2回复到所述生产者;
所述生产者将所述MSG_ID加一,保持所述REC_ID不变,并将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;
根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,如果出现异常,所述生产者重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
具体地,根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,具体为:
在所述管理中心第一次收到消息后,为所述待上传消息设置一个待确认标签;还会将消息回复给客户端;
当所述管理中心收到所述生产者第二次上传的消息,将所述待确认标签去掉;
当所述管理中心未收到所述生产者第二次上传的消息,判定所述消息上传过程存在异常,所述生产者自动将所述REC_ID加一,重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
其中,将所述生产者重新上传的消息替换所述管理中心第一次收到所述待上传消息,且对所述重新上传的消息不做处理。同时仅回复生产者新消息已收到。
优选地,还包括:
在所述预先定义的格式中增加消息长度标识符;
所述管理中心在设置offset值时,结合所述消息长度的大小确认所述offset值,其中所述offset值作为所述待上传消息中的每条消息的唯一序列号;
根据所述offset值,消费者从所述管理中心获取消息。
通过上述offset值的设置,确保消费者每次从所述管理中心获取消息时是从消息头部开始获取。
通过在消息格式中增加消息长度标识符length,此时,消息格式变为:MSG_ID+REC_ID+length+被封装的消息+CRC2;由于每个消息都有一个连续的序列号叫做offset,用来在分区中对消息进行唯一标识。但是由于消费者不知道单个消息的长度,只能通过增加offset值的方式尝试从管理中心获取消息。因此,本发明在消息格式中增加消息长度标识符,管理中心在设置offset值时,可以结合消息中的length大小确认offset,保证每次消费者都可以正确地从消息头部开始获取到消息。
优选地,还包括:
在所述预先定义的格式中增加优先级标识符URG;
当所述管理中心收到所述待上传消息时,根据所述URG判断所述待上传消息中每条消息的优先级;
根据所述每条消息的优先级,消费者选择处理所述待上传消息中每条消息的顺序。
其中,不同类别的消息对应不同的优先级,根据所述待上传消息中每条消息的类别,将所述每条消息放到对应的队列中。
优选地,所述每条消息对应设置数据项,所述数据项用来记录所述每条消息的紧急程度;
消费者处理所述待上传消息时,结合所述每条消息的优先级和紧急程度确定下一条处理的消息。
其中,所述数据项包括指针或指针数组。
不同的topic可以具有不同的优先级,如:用户可即时感知的topic优先级高于用户不可即时感知的topic、系统升级的topic优先级高于界面切换的topic。
优选地,当用户的输入消息为语音时,可对用户语音进行识别,在生成消息的时候,根据用户语气、表情等分析用户对本条消息回复的期望情况,比如用户期望尽早的得到回复或者用户表现得较为焦虑等,表明该用户的期望高,对应消息的URG级别就越高,管理中心收到消息后,除了按照topic将消息放到对应队列中,还可通过相应的数据项(指针或指针数组)记录该消息的紧急程度,消费者处理消息时,结合消息的优先级和到达时间决定下一条应该处理的消息。
优选地,还包括:
在所述预先定义的格式中增加消息处理状态标识符STATE,其中,所述STATE分为多个编号,每个编号代表不同的消息处理状态;
所述生产者将所述STATE初始化为0,在消费者处理所述待上传消息中的某条消息时,通过所述STATE获取所述某条消息的消息处理状态。
其中,为STATE设置多个编码,具体为:
0:消息正在缓冲队列中等待发送
1:管理中心已收到消息
2:消息已被放入topic中
3:消息已被消费者获得,正在等待处理结果
初始化时,STATE为0,通过不同的编码可了解不同消息的处理状态。
第二方面,参见图2,本发明提供一种基于分布式订阅发布消息系统的消息管理系统10,包括:
消息格式定义模块101,用于将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2
消息上传模块102,用于将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供的一种基于分布式订阅发布消息系统的消息管理系统10,其技术方案为:通过消息格式定义模块101,将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2;通过消息上传模块102,将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心。
本发明提供一种基于分布式订阅发布消息系统的消息管理系统10,通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
优选地,所述消息上传模块,具体用于:
所述生产者将所述MSG_ID设置为随机值,将所述REC_ID设置为n,所述n表示所述待上传消息第n次发送;
所述管理中心第一次收到所述待上传消息后,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并将收到的所述待上传消息中MSG_ID+REC_ID+CRC2回复到所述生产者;
所述生产者将所述MSG_ID加一,保持所述REC_ID不变,并将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;
根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,如果出现异常,所述生产者重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
优选地,还包括:
消息长度标识符增加模块,具体用于:
在所述预先定义的格式中增加消息长度标识符;
所述管理中心在设置offset值时,结合所述消息长度的大小确认所述offset值,其中所述offset值作为所述待上传消息中的每条消息的唯一序列号;
根据所述offset值,消费者从所述管理中心获取消息。
优选地,还包括:
优先级标识符增加模块,具体用于:
在所述预先定义的格式中增加优先级标识符URG;
当所述管理中心收到所述待上传消息时,根据所述URG判断所述待上传消息中每条消息的优先级;
根据所述每条消息的优先级,消费者选择处理所述待上传消息中每条消息的顺序。
优选地,还包括:
消息处理状态标识符增加模块,具体用于:
在所述预先定义的格式中增加消息处理状态标识符STATE,其中,所述STATE分为多个编号,每个编号代表不同的消息处理状态;
所述生产者将所述STATE初始化为0,在消费者处理所述待上传消息中的某条消息时,通过所述STATE获取所述某条消息的消息处理状态。
实施例二
基于实施例一中的基于分布式订阅发布消息系统的消息管理方法及系统,本实施例提供一种基于人机交互的分布式订阅发布消息系统的消息管理方法,具体为:
生产者包括提用户设置功能,编辑程序的相关人员,需要将指令消息上传给机器人;
管理中心为机器人;
消费者都为用户;
完整的消息上传格式为:MSG_ID(2bytes)+REC_ID(2bytes)+length(1bytes)+URG(1bytes)+STATE(1bytes)+被封装的消息+CRC2
其中,目前常用的消息格式为:
版本号:1byte
CRC校验码:4bytes
具体的消息:n bytes
在生产者上传消息至机器人时,可通过实施例一中的方法,通过MSG_ID和REC_ID确定消息的传输状态,生产者将MSG_ID设置为随机值,将REC_ID设置为n,n表示该消息第n次发送,管理中心收到消息后,保持MSG_ID不变,将REC_ID设置为随机值,并将消息MSG_ID(2bytes)+REC_ID(2bytes)+CRC2回复到生产者,然后生产者将MSG_ID加一,保持REC_ID不变,并将消息MSG_ID(2bytes)+REC_ID(2bytes)+CRC2回复到管理中心。
具体过程如下:
管理中心在第一次收到生产者发送的消息时,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并回复消息给客户端,还将为消息打一个待确认的标签,生产者会自动将REC_ID加一,重发信息,保持所述REC_ID不变,并重新将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;如果管理中心收到生产者的第二次消息,第二次消息表示管理中心接收到的是生产者发来的说明生产者已经知道管理中心收到原始消息的确认信息,则将消息的待确认标签去掉,如果管理中心没有收到生产者的第二次消息,则说明生产者不知道管理中心已经收到并处理该消息,生产者在这种情况下可能重发该消息,到服务器再次收到同样的消息时,会用新消息替换原有的消息且不对新消息做处理,仅回复生产者新消息已经收到。
其中,每个消息都有一个offset,offset作为序列号,将offset作为每个消息唯一的标识,序列号本身是一系列连续的号码。但是由于消费者不知道单个消息的长度,只能通过增加offset值的方式尝试从管理中心获取消息。因此,本发明在消息格式中增加消息长度,管理中心在设置offset值时,可以结合消息中的length大小确认offset,保证每次消费者都可以正确地从消息头部开始获取到消息。
在人机交互的过程中,有些信息较为紧急需要优先处理,如:用户告诉机器人为自己设置一个闹钟,在设置闹钟的消息还没有到达服务中心的时候,用户又询问机器人明天的天气,则对天气的询问需要机器人优先响应,而闹钟设置机器人仅需尽快设置即可,优先级低于天气询问需求。当管理中心收到消息时,需要判断信息的优先级。因此在消息中增加优先级标识符URG,将类似于上述情况的不同消息进行优先级排序,按照优先级处理不同的消息。
另外,不同的topic可以具有不同的优先级,如:用户可即时感知的topic优先级高于用户不可即时感知的topic、系统升级的topic优先级高于界面切换的topic。
如果用户为语音输入,则在对用户语音进行识别生成消息的时候,根据用户语气、表情等分析用户对本条消息回复的期望情况,用户期望(希望尽早的得到回复或者用户表现得较为焦虑等)越高则消息的URG级别越高。管理中心收到消息后,除了按照topic将消息放到对应队列中,还有相应的数据项(指针或指针数组)记录该消息的紧急程度,消费者处理消息时,结合消息的优先级和到达时间决定下一条应该处理的消息。
在人机交互过程中,用户可能会询问机器人某条消息的执行状态。如:用户让机器人帮助预订机票,可能在机器人获得最终结果前,用户会询问机器人“订好了吗?”,这种情况下,需要从管理中心获取订票消息的执行状态,并反馈给用户(可能是,等一下主人,今天南航的官网打开速度很慢,我还在缓冲余票情况;或者是,主人好,余票信息已经更新,但是票价对比还未完成,主人要不要先听一下余票情况?)。消息格式中的STATE标识了消息的处理状态,生产者将STATE初始化为0。STATE可以编号为:
0:消息正在缓冲队列中等待发送
1:管理中心已收到消息
2:消息已被放入topic中
3:消息已被消费者获得,正在等待处理结果
通过以上不同的编号,即可了解消息的处理状态。
与现有技术相比,本申请提供的技术方案的技术效果为:
1、通过在消息格式中增加的MSG_ID和REC_ID用于生产者和管理中心之间确定消息的传输状态,在生产者上传消息至管理中心时,增加对上传异常情况的处理,确保生产者的消息成功上传至管理中心。
2、通过在消息格式中增加消息长度标识符length,保证每次消费者都可以正确地从消息头部开始获取到消息。
3、通过在消息格式中增加优先级标识符URG,可在人机交互的过程中,按照优先级有线处理一些需要紧急处理的信息。
4、通过在消息格式中增加消息处理状态标识符STATE,可实现在人机交互过程中,便于消费者知道每条消息的处理状态。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (8)

1.基于分布式订阅发布消息系统的消息管理方法,其特征在于,包括:
步骤S1,将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2
步骤S2,将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心;
所述步骤S2,具体为:
所述生产者将所述MSG_ID设置为随机值,将所述REC_ID设置为n,所述n表示所述待上传消息第n次发送;
所述管理中心第一次收到所述待上传消息后,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并将收到的所述待上传消息中MSG_ID+REC_ID+CRC2回复到所述生产者;
所述生产者将所述MSG_ID加一,保持所述REC_ID不变,并将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;
根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,如果出现异常,所述生产者重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
2.根据权利要求1所述的基于分布式订阅发布消息系统的消息管理方法,其特征在于,还包括:
在所述预先定义的格式中增加消息长度标识符;
所述管理中心在设置offset值时,结合所述消息长度的大小确认所述offset值,其中所述offset值作为所述待上传消息中的每条消息的唯一序列号;
根据所述offset值,消费者从所述管理中心获取消息。
3.根据权利要求1所述的基于分布式订阅发布消息系统的消息管理方法,其特征在于,还包括:
在所述预先定义的格式中增加优先级标识符URG;
当所述管理中心收到所述待上传消息时,根据所述URG判断所述待上传消息中每条消息的优先级;
根据所述每条消息的优先级,消费者选择处理所述待上传消息中每条消息的顺序。
4.根据权利要求1所述的基于分布式订阅发布消息系统的消息管理方法,其特征在于,还包括:
在所述预先定义的格式中增加消息处理状态标识符STATE,其中,所述STATE分为多个编号,每个编号代表不同的消息处理状态;
所述生产者将所述STATE初始化为0,在消费者处理所述待上传消息中的某条消息时,通过所述STATE获取所述某条消息的消息处理状态。
5.基于分布式订阅发布消息系统的消息管理系统,其特征在于,包括:
消息格式定义模块,用于将生产者生成的消息按照预先定义的格式进行封装,得到待上传消息,所述预先定义的格式为MSG_ID+REC_ID+被封装的消息+CRC2
消息上传模块,用于将所述待上传消息上传至管理中心,并通过所述MSG_ID和REC_ID确定所述生产者和所述管理中心之间的消息传输状态,确保所述待上传消息成功传输至所述管理中心;
所述消息上传模块,具体用于:
所述生产者将所述MSG_ID设置为随机值,将所述REC_ID设置为n,所述n表示所述待上传消息第n次发送;
所述管理中心第一次收到所述待上传消息后,保持所述MSG_ID不变,将所述REC_ID设置为随机值,并将收到的所述待上传消息中MSG_ID+REC_ID+CRC2回复到所述生产者;
所述生产者将所述MSG_ID加一,保持所述REC_ID不变,并将所述MSG_ID+REC_ID+CRC2回复到所述管理中心,实现所述生产者第二次上传至所述管理中心消息;
根据所述管理中心接收所述生产者第二次上传信息的接收情况,判断所述消息上传过程中是否出现异常,如果出现异常,所述生产者重新上传所述待上传消息至所述管理中心,确保所述待上传消息成功传输至所述管理中心。
6.根据权利要求5所述的基于分布式订阅发布消息系统的消息管理系统,其特征在于,还包括:
消息长度标识符增加模块,具体用于:
在所述预先定义的格式中增加消息长度标识符;
所述管理中心在设置offset值时,结合所述消息长度的大小确认所述offset值,其中所述offset值作为所述待上传消息中的每条消息的唯一序列号;
根据所述offset值,消费者从所述管理中心获取消息。
7.根据权利要求5所述的基于分布式订阅发布消息系统的消息管理系统,其特征在于,还包括:
优先级标识符增加模块,具体用于:
在所述预先定义的格式中增加优先级标识符URG;
当所述管理中心收到所述待上传消息时,根据所述URG判断所述待上传消息中每条消息的优先级;
根据所述每条消息的优先级,消费者选择处理所述待上传消息中每条消息的顺序。
8.根据权利要求5所述的基于分布式订阅发布消息系统的消息管理系统,
其特征在于,还包括:
消息处理状态标识符增加模块,具体用于:
在所述预先定义的格式中增加消息处理状态标识符STATE,其中,所述STATE分为多个编号,每个编号代表不同的消息处理状态;
所述生产者将所述STATE初始化为0,在消费者处理所述待上传消息中的某条消息时,通过所述STATE获取所述某条消息的消息处理状态。
CN201711259961.4A 2017-12-04 2017-12-04 基于分布式订阅发布消息系统的消息管理方法及系统 Active CN108063803B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711259961.4A CN108063803B (zh) 2017-12-04 2017-12-04 基于分布式订阅发布消息系统的消息管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711259961.4A CN108063803B (zh) 2017-12-04 2017-12-04 基于分布式订阅发布消息系统的消息管理方法及系统

Publications (2)

Publication Number Publication Date
CN108063803A CN108063803A (zh) 2018-05-22
CN108063803B true CN108063803B (zh) 2020-10-13

Family

ID=62136065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711259961.4A Active CN108063803B (zh) 2017-12-04 2017-12-04 基于分布式订阅发布消息系统的消息管理方法及系统

Country Status (1)

Country Link
CN (1) CN108063803B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110968439B (zh) * 2019-11-28 2020-12-15 蜂助手股份有限公司 系统间的消息通知方法、装置、服务器、系统及存储介质
CN111443801B (zh) * 2020-03-25 2023-10-13 北京百度网讯科技有限公司 人机交互方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645760A (zh) * 2008-08-05 2010-02-10 中兴通讯股份有限公司 上行调度授权的发送方法及装置、基站
CN103562890A (zh) * 2011-05-18 2014-02-05 国际商业机器公司 在发布/订阅消息系统中管理消息订阅
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法
CN104486107A (zh) * 2014-12-05 2015-04-01 曙光信息产业(北京)有限公司 一种日志采集装置及方法
CN106130882A (zh) * 2016-07-13 2016-11-16 北京百度网讯科技有限公司 用于传输消息的方法和装置
CN106293968A (zh) * 2016-08-04 2017-01-04 华中科技大学 一种基于Kafka消息中间件的双向通信系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874667B2 (en) * 2010-05-18 2014-10-28 International Business Machines Corporation Linking topics in a publish/subscribe messaging environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645760A (zh) * 2008-08-05 2010-02-10 中兴通讯股份有限公司 上行调度授权的发送方法及装置、基站
CN103562890A (zh) * 2011-05-18 2014-02-05 国际商业机器公司 在发布/订阅消息系统中管理消息订阅
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法
CN104486107A (zh) * 2014-12-05 2015-04-01 曙光信息产业(北京)有限公司 一种日志采集装置及方法
CN106130882A (zh) * 2016-07-13 2016-11-16 北京百度网讯科技有限公司 用于传输消息的方法和装置
CN106293968A (zh) * 2016-08-04 2017-01-04 华中科技大学 一种基于Kafka消息中间件的双向通信系统及方法

Also Published As

Publication number Publication date
CN108063803A (zh) 2018-05-22

Similar Documents

Publication Publication Date Title
CN102202102B (zh) 基于云计算架构的网络服务聚合系统及其聚合方法
CN108874558B (zh) 分布式事务的消息订阅方法、电子装置及可读存储介质
CN109756559B (zh) 面向嵌入式机载系统分布式数据分发服务的构建及使用方法
CN113360301B (zh) 一种消息传输系统及方法
CN105260842B (zh) 异构erp系统之间的通信方法和系统
CN108063803B (zh) 基于分布式订阅发布消息系统的消息管理方法及系统
CN111221793A (zh) 数据挖掘方法、平台、计算机设备及存储介质
CN114338793A (zh) 消息推送方法、装置、电子设备及可读存储介质
CN111930531A (zh) 数据处理、数据生产、数据消费方法、装置、设备及介质
CN107729213A (zh) 一种后台任务监控方法及装置
CN108595480B (zh) 一种基于云计算的大数据etl工具系统及应用方法
CN107819823A (zh) 一种信息处理方法、服务器及计算机可读存储介质
CN113127225A (zh) 一种数据处理任务的调度方法、装置和系统
CN113141403B (zh) 一种日志传输方法和装置
CN111327511B (zh) 即时通讯方法、系统、终端设备与存储介质
CN111291127A (zh) 一种数据同步方法、装置、服务器及存储介质
CN107943541B (zh) 一种Windows本地组件的通讯方法
CN113079055A (zh) 一种agv运行数据的动态采集方法和装置
CN112965844A (zh) 一种cpu飙升事故处理方法和装置
CN112749204A (zh) 一种读取数据的方法和装置
CN113760482A (zh) 一种任务处理方法、装置和系统
CN111949472A (zh) 一种记录应用日志的方法及装置
CN113285855B (zh) 服务器监控方法及系统
CN112311833B (zh) 数据更新方法和装置
CN113206872B (zh) 一种消息发送方法、终端及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Room 301, Building 39, 239 Renmin Road, Gusu District, Suzhou City, Jiangsu Province, 215000

Applicant after: SHENZHEN GOWILD ROBOTICS Co.,Ltd.

Address before: Oriental Science and Technology Building No. 16 Keyuan Road, Shenzhen street 518000 city in Guangdong province Nanshan District Guangdong 1307-09

Applicant before: SHENZHEN GOWILD ROBOTICS Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
PP01 Preservation of patent right

Effective date of registration: 20220228

Granted publication date: 20201013

PP01 Preservation of patent right