批量消息队列的校验方法、电子设备和介质

文档序号:1963593 发布日期:2021-12-14 浏览:18次 >En<

阅读说明:本技术 批量消息队列的校验方法、电子设备和介质 (Batch message queue checking method, electronic device and medium ) 是由 邵佳文 于 2021-08-16 设计创作,主要内容包括:本发明公开了一种批量消息队列的校验方法、电子设备和介质,其特征在于,其中,校验方法包括以下步骤:步骤S1:上游系统将消息队列发送给下游系统,所述消息队列带有一版本号,步骤S2:下游系统接受所述消息队列,步骤S3:下游系统校验所述消息队列。本发明避免了上游系统逐条发送下游系统逐条消费,也避免在同一时间将全部消息队列取出,减小了CPU的使用量,减小了系统的风险,也降低了系统的复杂程度,有利于系统的代码的开发,增强了可推广性。(The invention discloses a verification method, electronic equipment and a medium for a batch message queue, which are characterized in that the verification method comprises the following steps: step S1: the upstream system sends a message queue to the downstream system, the message queue having a version number, step S2: the downstream system accepts the message queue, step S3: the downstream system checks the message queue. The invention avoids the upstream system sending the downstream system one by one for consumption, and also avoids taking out all message queues at the same time, thereby reducing the use amount of CPU, reducing the risk of the system, reducing the complexity of the system, being beneficial to the development of the code of the system, and enhancing the generalizability.)

批量消息队列的校验方法、电子设备和介质

技术领域

本发明属于信息技术领域,具体涉及一种批量消息队列的校验方法、电子设备和介质。

背景技术

在现代企业内部与企业与企业之间,不同的系统之间会相互调和与数据传输,在现有阶段,将消息队列进行消费的机制是上游系统逐条推送,下游系统逐条接收,但是由于网络抖动或者主机故障等原因,信息传输可能会丢失或者失序。

现阶段企业解决批量消息数据的时候,会将消息统一全部接收存储至系统内部,再从内部将系统将所需要的数据进行提取,但是资源的方法有着:当上游系统的数据量过大或者是数据的批次过多的时候,下游系统的CPU压力过大,在高峰期甚至会出现宕机的情况,统一的取出操作无法做到准实时性,只能通过上下游系统之间的预先约定好的时间点对统一的数据进行取出,然后进行分批判断。

发明内容

本发明所需要解决的技术问题是为了克服现有技术中的上下游系统之间逐条推送逐条消费,并且在同一时间将所有消息取出的缺陷,提供一种批量消息的处理方法、电子设备和介质。

本发明是通过下述技术方案来解决上述技术问题:

一种批量消息队列的校验方法,包括以下步骤:

步骤S1:上游系统将消息队列发送给下游系统,所述消息队列带有一版本号;

步骤S2:下游系统接受消息队列;

步骤S3:下游系统校验消息队列;

步骤S1具体包括:当上游系统发送的消息队列是若干带有版本号的消息队列中的最后一条消息队列时,最后一条消息队列包括一最后标志位以及一消息批次数量字段;

其中步骤S2具体包括:下游系统将带有版本号的消息队列提取至数据库中,并对版本号进行识别与计数,并在数据库中建立一一对应版本号的集合,将带有版本号的消息队列存集合中;

当下游系统消息队列的最后一条消息时,读取最后标志以及消息批次数量字段;

其中步骤S3具体包括:下游系统将带有版本号的消息队列的计数结果与消息批次数量字段进行对比。

较佳地,数据库为远程字典服务。

较佳地,步骤S2包括以下步骤:

步骤S21:判断数据库中是否包括版本号所对应的集合,如果包括,则将消息队列添加至集合;如果不包括,则数据库创建一个版本号对应的集合,消息队列存放至所创建的集合中。

较佳地,步骤S3包括以下步骤:

步骤S31:当消息批次数量字段与计数结果的结果不一样的时候,下游系统通知上游系统消息队列发送失败消息;步骤S42:当消息批次数量字段与计数结果一样的时候,下游系统通知上游系统消息队列发送成功。

较佳地,步骤S3还包括以下步骤:

步骤S33:当上游系统收到发送失败消息时,上游系统将所述消息队列进行再一次发送。

较佳地,步骤S33还包括对所述发送失败消息的次数进行计数。

较佳地,步骤S3还包括以下步骤:

步骤S34:上游系统预设有一阈值,阈值用于与所述发送失败次数对比;

如果发送失败次数超过所述阈值,上游系统就会停止发送;

如果发送失败次数没有超过阈值,上游系统会重新发送一遍消息队列。

本发明的积极进步效果在于:

1.通过版本号、最后标志位以及消息批次数量字段,避免上下游系统之间约定好时间点,也避免了下游系统CPU压力过大的情形。

2.在校验方面减少了代码的开发量,简化了系统的复杂程度,极大提高了推广性。

附图说明

图1为本发明实施例1的批量消息队列的校验方法的流程简图。

图2为本发明实施例1的批量消息队列的校验方法的流程详图。

图3为本发明的实施例2的电子设备的结构示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

参见图1,本实施例提一种批量消息队列的校验方法。该校验方法包括以下步骤:

步骤S1:上游系统将消息队列发送给下游系统,消息队列带有一版本号;

步骤S2:下游系统接受所述消息队列;

步骤S3:下游系统校验所述消息队列;

所述步骤S1中,当上游系统发送的消息队列是若干带有所述版本号的消息队列中的最后一条消息队列时,所述最后一条消息队列包括一最后标志位以及一消息批次数量字段;

所述步骤S2中,下游系统将带有所述版本号的消息队列提取至数据库中,并对所述版本号进行识别与计数,并在所述数据库中建立一一对应所述版本号的集合,将带有所述版本号的消息队列存所述集合中;

当下游系统接受所述消息队列的最后一条消息时,读取所述最后标志以及所述消息批次数量字段;

所述步骤S3中,下游系统将带有所述版本号的消息队列的计数结果与所述消息批次数量字段进行对比。

在本实施例中,上游系统将一带有一版本号的消息队列发送至下游系统,下游系统接受上游系统所发送的消息队列并识别其版本号,并将消息队列存储在数据库,数据库中设置有若干集合,每个集合与版本号对应,并将消息队列存储至版本号所对应的集合之中,当一个消息队列存储至数据库的集合中时,数据库就会将对所对应的版本号进行计数,当上游所发送的消息队列为所对应的版本号的消息队列中的最后一条消息队列的时候,此时最后一条消息队列包括一最后标志位以及一消息批次数量字段,当最后一条消息发送至下游系统,下游系统将该版本号的最后一条消息存储至版本号所对应的集合中并计数,同时下游系统读取最后标志位以及消息批量字段,下游系统将消息批量字段与该版本号所计数进行对比。

具体地,版本号为包括但不限于"version":"3c8892c2-eba5-48e4-a8f3-0b46536814d0"。

具体地,最后标志位包括但是不限于“last”,

具体地,消息批次数量字段包括但是不限于“versionNum”。

做为一种优选的实施例,数据库为远程字典服务,字典服务具有响应时间短,读写性能高的优点。

最后一条消息的数据表结构如下:

{

"version":"3c8892c2-eba5-48e4-a8f3-0b46536814d0",

"last":true,

"versionNum":100

}

远程字典存储的数据结构如下

1.远程字典保存消息数量数据结构:

{

"key":"count-3c8892c2-eba5-48e4-a8f3-0b46536814d0",

"value":"100",

}

2.redis保存消息内容数据结构

具体步骤请参见图2,

步骤S2包括以下步骤:

步骤S21:判断所述数据库中是否包括所述版本号所对应的集合,如果包括,则将所述消息队列添加至所述集合;如果不包括,则所述数据库创建一个所述版本号对应的集合,消息队列存放至所创建的集合中。

具体地,步骤S3包括以下步骤:

步骤S31:当所述消息批次数量字段与所述计数结果的结果不一样的时候,所述下游系统通知所述上游系统所述消息队列发送失败消息;步骤S32:当所述消息批次数量字段与所述计数结果一样的时候,所述下游系统通知所述上游系统所述消息队列发送成功。

步骤S33:当所述上游系统收到发送失败消息时,所述上游系统将所述消息队列进行再一次发送。

所述步骤S33还包括所述下游系统对所述发送失败消息次数进行计数。

步骤S34:所述上游系统预设有一阈值,所述阈值用于与所述发送失败次数对比;

如果所述发送失败次数超过所述阈值,所述上游系统就会停止发送;

如果所述发送失败次数没有超过所述阈值,所述上游系统会重新发送一遍消息队列。

实施例2

图3为本实施例提供的一种电子设备的结构示意图。所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1的批量消息队列的方法。图3显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图3所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。

总线33包括数据总线、地址总线和控制总线。

存储器32可以包括易失性存储器,例如随机存取存储器(RAM)321和/或高速缓存存储器322,还可以进一步包括只读存储器(ROM)323。

存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1的数据倾斜的处理方法。

电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

实施例3

本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1的批量消息队列的校验的方法的步骤。

其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。

在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1的数据倾斜的处理方法的步骤。

其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种多节点并行处理海量任意目录结构存档文件的方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!