CN107341062B - 一种数据推送方法、装置、设备以及存储介质 - Google Patents

一种数据推送方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN107341062B
CN107341062B CN201710512276.1A CN201710512276A CN107341062B CN 107341062 B CN107341062 B CN 107341062B CN 201710512276 A CN201710512276 A CN 201710512276A CN 107341062 B CN107341062 B CN 107341062B
Authority
CN
China
Prior art keywords
data
callback
receiver
submitted
sender
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
CN201710512276.1A
Other languages
English (en)
Other versions
CN107341062A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201710512276.1A priority Critical patent/CN107341062B/zh
Publication of CN107341062A publication Critical patent/CN107341062A/zh
Application granted granted Critical
Publication of CN107341062B publication Critical patent/CN107341062B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明实施例公开了一种数据推送方法、装置、设备及存储介质。该方法包括:如果消息队列MQ当前回调数据失败,根据预先统计的MQ的重试回调数据次数确定下次回调时间间隔;如果下次回调时间间隔到达,通过MQ再次回调数据;如果MQ再次回调成功,通过MQ将回调的数据推送至接收方,通过本发明的技术方案,能够提高将数据推送至接收方的效率。

Description

一种数据推送方法、装置、设备以及存储介质
技术领域
本发明实施例涉及信息处理技术,尤其涉及一种数据推送方法、装置、设备以及存储介质。
背景技术
在糯米的项目开发中,经常会遇到需要将一个业务的同一份数据,通过API调用同时推送到多个接收方,由于接收方偶发的不稳定可能会导致不能正常接收数据,这时就需要每个发送方都建立相应的漏推补偿机制。
现有的漏推补偿机制是通过经过设定的时间进行补推的方式实现的,具体的实现方式是在接收方没有接收到数据的情况下,经过设定的时间,发送方重新提交请求至MQ(Message Queue,消息队列)中,在异步接口中回调各个接收方。
但是,造成推送失败的原因有可能是由于接收方出现问题导致的,这时解决接收方问题就需要一定的时间,如果一直采取上述设定的时间进行漏推补偿,则可能导致一些不必要的漏推,例如,在接收方问题没解决时,即使推送了接收方依旧不能够接收,这样会导致很多无效的推送,推送效果相对较差。
发明内容
本发明实施例提供一种数据推送方法、装置、设备以及存储介质,能够提高将数据推送至接收方的效率。
第一方面,本发明实施例提供了一种数据推送方法,包括:
如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔;
如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;
如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方。
第二方面,本发明实施例还提供了一种数据推送装置,包括:
回调间隔确定模块,用于如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔;
数据回调模块,用于如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;
数据推送模块,用于如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明实施例中任一所述的数据推送方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据推送方法。
本发明实施例提供了一种数据推送方法、装置、设备以及存储介质,通过如果消息队列MQ当前回调数据失败,根据预先统计的MQ的重试回调数据次数确定下次回调时间间隔,如果下次回调时间间隔到达,通过MQ再次回调数据,如果MQ再次回调成功,通过MQ将回调的数据推送至接收方,解决了现有技术中由于MQ回调数据失败后经过固定的时间间隔再次回调数据而导致降低了MQ回调数据的成功率的问题,减少了不必要的回调次数,提高了MQ回调数据的成功率,进而能够提高将数据推送至接收方的效率。
附图说明
图1是本发明实施例一中的一种数据推送方法的流程图;
图2是本发明实施例二中的一种数据推送方法的流程图;
图3是本发明实施例三中的一种数据推送方法的流程图;
图4是本发明实施例三中的一种数据推送方法的示意图;
图5是本发明实施例四中的一种数据推送装置的结构图;
图6是本发明实施例五中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据推送方法的流程图,本实施例可适用于各种数据推送的情况,该方法可以由本发明实施例提供的数据推送装置来执行,该装置可采用软件和/或硬件的方式实现,该装置可集成在用户终端内的应用端中;
其中,应用端可以为内嵌于用户终端(例如,电脑或者移动终端等)中的某个客户端的插件,或者为所述用户终端的操作系统的插件,与内嵌于用户终端中的应用程序配合使用;应用端也可以为所述用户终端中一个独立的可提供数据推送的客户端,本实施例对此不进行限制。
本实施例中,数据推送指的是将数据从发送方传输至消息队列MQ中,再将传输至消息队列MQ中的数据推送至接收方,所述接收方为与发送方相对,发送方指的是发送数据的终端,接收方指的是接收数据的终端。例如可以是,将数据从A终端发送至B终端,则A终端为发送方,B终端为接收方。
如图1所示,本实施例的方法具体包括:
S110、如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔。
其中,所述消息队列MQ是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行。
具体的,消息队列MQ可以从发送方回调数据,也可以从存储有数据的缓存中回调数据,还可以从存储有数据的硬盘中回调数据,本实施例对此不进行限制。
其中,所述消息队列MQ当前回调数据指的是从发送方回调数据,或者是从存储有数据的缓存中回调数据,还可以从存储有数据的硬盘中回调数据等,本实施例对此不进行限制。
具体的,消息队列MQ回调数据失败的原因可能是由于网络故障,也可能是由于MQ内存不足,本实施例对MQ回调数据失败的原因不进行限制。
其中,所述预先统计的所述MQ的重试回调数据次数指的是在本次MQ回调数据之前,MQ回调数据失败的次数。所述统计MQ的重试回调数据次数可以通过日志文件记录获得,也可以通过数据库记录获得,本实施例对此不进行限制。所述下次回调时间间隔指的是本次回调数据后至下次回调数据前的时间间隔,所述下次回调时间间隔与回调次数有关。
在本发明实施例中,消息队列MQ当前回调数据失败时指的是消息队列MQ没有从发送方回调数据,或者是没有从存储有数据的缓存中回调数据,也可能是没有从存储有数据的硬盘中回调数据等,本实施例对此不进行限制,根据预先统计的MQ的重试回调数据次数确定下次回调时间。
S120、如果下次回调时间间隔到达,通过所述MQ再次回调数据。
具体的,在经过下次回调时间间隔之后,MQ再次回调数据。例如可以是,MQ回调数据,由于网络问题MQ回调数据失败,记录MQ回调数据失败的次数为1,根据MQ回调数据失败的次数为1确定下次回调的时间为1分钟,经过1分钟之后,MQ再次回调数据。
可选的,还包括:如果所述MQ再次回调失败,重复执行确定下次回调时间间隔的操作,直至回调成功。
具体的,如果MQ再次回调失败,根据预先统计的MQ的重试回调数据次数确定下次回调时间间隔,如果下次回调时间间隔到达,通过所述MQ再次回调数据,若MQ再次回调失败,则继续记录回调失败次数,并根据回调失败次数确定下次回调时间间隔。若MQ回调成功,则停止上述步骤。
可选的,所述下次回调时间间隔随着所述重试回调数据次数的增多而增长。
在一个具体的例子中,MQ回调数据失败,记录回调失败次数为1,根据回调失败次数为1确定下次回调时间间隔为1分钟,经过1分钟,MQ再次回调数据;MQ回调失败,记录回调失败次数为2,根据回调失败次数为2确定下次回调时间间隔为2分钟,经过2分钟,MQ再次回调数据;MQ回调失败,记录回调失败次数为3,根据回调失败次数为3确定下次回调时间间隔为3分钟,经过3分钟,MQ再次回调数据,MQ回调数据成功。
由于导致MQ回调数据失败的原因比较多,有很多原因可能比较严重,不能够在短时间内解决。因此,如果总是在经过相同的时间之后MQ再次回调数据,就可能会导致进行很多次无效的数据传输。本实施例根据MQ的重试回调数据次数确定下次回调时间间隔,下次回调时间间隔随着重试回调数据次数的增多而增长。通过上述方法可以减少不必要的MQ回调数据的次数,提高传输的效率。
可选的,还包括:将当前回调数据的失败信息记录至第一设定数据库中,并记录回调数据失败的次数。
其中,所述第一设定数据库可以为MYSQL,也可以为其他的数据库。
具体的,在确定消息队列MQ当前回调数据失败时,将回调数据失败信息记录至第一设定数据库中,并记录回调数据失败的次数。由于日志文件只是普通文本,因此将回调数据失败的次数和回调数据失败信息记录至第一设定数据库中能够减少调取回调数据失败的次数的时间,相比与从日志文件中获得更节省时间,且日志文件中不止包含回调数据失败信息还包含回调数据成功信息,而第一设定数据库只包含回调数据失败的次数和回调数据失败信息,方便获取回调数据失败的次数。
S130、如果MQ再次回调成功,通过MQ将回调的数据推送至接收方。
其中,所述MQ再次回调成功指的是成功将数据回调至MQ中。
例如,若数据成功回调至MQ中,则MQ将回调的数据推送至B终端。
本发明实施例通过如果消息队列MQ当前回调数据失败,根据预先统计的MQ的重试回调数据次数确定下次回调时间间隔,如果下次回调时间间隔到达,通过MQ再次回调数据,如果MQ再次回调成功,通过MQ将回调的数据推送至接收方,解决了现有技术中由于MQ回调数据失败后经过固定的时间间隔再次回调数据而导致降低了MQ回调数据的成功率的问题,减少了不必要的回调次数,提高了MQ回调数据的成功率,进而能够提高数据推送的效率。
实施例二
图2为本发明实施例二提供的一种数据推送方法的流程图,本实施例在上述实施例的基础上,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔之前,还包括:将发送方提交的数据传输至所述MQ,并将所述发送方提交的数据保存至缓存中;若确定所述提交的数据传输至所述MQ失败,则根据预先记录的传输失败次数确定下次传输时间间隔;如果所述下次传输时间间隔到达,调取所述缓存中存储的数据再次传输至MQ中,若确定再次传输至MQ失败,重复执行确定下次传输时间间隔的操作,直至将所述提交的数据成功传输至MQ中。
由于在MQ当前回调数据失败时,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔,当确定下次回调时间间隔到达时,若从发送方将数据传输至MQ中可能会增加数据传输的时间,本发明实施例采用将发送方提交的数据传输至MQ时,同时将发送方提交的数据保存至缓存中,这样就可以在数据传输至MQ失败后,经过一定时间,直接从缓存中将数据发送至MQ中,相对于从发送方向MQ发送数据,从缓存向MQ发送数据更加方便快捷。提高数据传输的效率。
相应的,本发明实施例的方法包括:
S210、将发送方提交的数据传输至所述MQ,并将所述发送方提交的数据保存至缓存中。
其中,所述缓存可以为redis,也可以为其他缓存。
具体的,将发送方提交的数据传输至所述MQ时,同时将发送方提交的数据保存至缓存中,相当于将发送方的数据在缓存中进行备份,缓存中的数据和发送方的数据是一致的。
可选的,将发送方提交的数据传输至所述MQ,并将所述发送方提交的数据保存至缓存中包括:
根据各MQ的当前使用情况分配适于数据传输的MQ。
其中,各MQ的当前使用情况指的是各MQ的占用情况,MQ可以有多个,各MQ的当前使用情况不尽相同。例如可以是,有的MQ空间不足,有的MQ还未被占用,有的MQ被占用一半。
在一个具体的例子中,有第一MQ、第二MQ和第三MQ,且第一MQ的当前使用情况为空间不足,第二MQ的当前使用情况为还未被占用,第三MQ的当前使用情况为被占用一半,若已知MQ未被占用的情况下MQ的空间容量为300,发送方发送的数据量为200,则根据各MQ的当前使用情况分配适于数据传输的MQ为第二MQ。
将所述提交的数据传输至分配的MQ中,并将所述提交的数据保存至缓存中。
其中,所述分配的MQ可以为一个,也可以为两个,本实施例对分配的MQ的个数不进行限制。
在一个具体的例子中,有第一MQ、第二MQ和第三MQ,且第一MQ的当前使用情况为空间不足,第二MQ的当前使用情况为还未被占用,第三MQ的当前使用情况为还未被占用,若已知MQ未被占用的情况下MQ的空间容量为200,发送方发送的数据量为400,则根据各MQ的当前使用情况分配适于数据传输的MQ为第二MQ和第三MQ。
通过提前获取各MQ的当前使用情况,根据各MQ的当前使用情况分配适于数据传输的MQ,将所述提交的数据传输至分配的MQ中,并将所述提交的数据保存至缓存中。能够避免由于在不了解各MQ的当前使用情况下,将数据传输至一些空间不足的MQ中,导致数据传输失败的情况,能够提高数据传输的效率。
S220、判断所述提交的数据是否能成功传输至MQ。
若确定所述提交的数据传输至所述MQ失败,则执行S240;若确定所述提交的数据传输至所述MQ成功,则执行S230。
S230、通过MQ将回调的数据推送至接收方。
具体的,发送方将数据传输至MQ,MQ将发送方传输的数据推送至接收方。
S240、根据预先记录的传输失败次数确定下次传输时间间隔。
可选的,所述下次传输时间间隔随着所述传输失败次数的增多而增长。
S250、如果下次传输时间间隔到达,调取缓存中存储的数据再次传输至MQ中,返回执行步骤S220。
具体的,若确定所述提交的数据传输至所述MQ失败,记录传输失败次数,根据传输失败次数确定下次传输时间间隔,下次传输时间间隔到达时,从缓存中调取之前存储至缓存中的数据,将数据传输至MQ中。
可选的,还包括:若确定所述提交的数据传输至MQ失败,则将传输失败信息记录至第二设定数据库中,并记录传输失败的次数。
其中,所述第二设定数据库可以为MYSQL,也可以为其他的数据库。
可选的,还包括:如果MQ回调数据失败或确定提交的数据传输至MQ失败,从缓存中调取发送方的数据。
其中,所述数据传输至MQ失败指的是发送方将数据传输至MQ失败。具体的,在确定消息队列MQ从发送方回调数据失败,或者是从存储有数据的缓存中回调数据失败,也可能是从存储有数据的硬盘中回调数据失败等情况时,从缓存中调取发送方的数据。MQ从缓存中调取数据相比与从发送方调取数据所需要的时间更短,因此采用从缓存中调取发送方的数据的方式可以提高数据推送的效率。
可选的,还包括:若将MQ中的数据推送至接收方成功,则将所述缓存中存储的数据删除。
其中,所述缓存中存储的数据为发送方需要传输的数据。具体的,若将MQ中的数据成功推送至接收方,则可以删除缓存中存储的数据,删除缓存中存储的数据可以有效的防止缓存中数据过多,减少缓存可用的存储空间的问题,也能够间接提升数据传输速度。
本发明实施例通过将发送方提交的数据传输至MQ时,同时将发送方提交的数据保存至缓存中,在确定提交的数据传输至所述MQ失败时,根据预先记录的传输失败次数确定下次传输时间间隔;如果下次传输时间间隔到达,调取缓存中存储的数据再次传输至MQ中,避免了现有技术中由于从发送方将数据传输至MQ中,导致增加数据传输的时间的情况,相对于从发送方向MQ发送数据,从缓存向MQ发送数据更加方便快捷。提高数据传输的效率。
实施例三
图3为本发明实施例三提供的一种数据推送方法的流程图,本实施例在上述实施例的基础上,当确定所述MQ再次回调成功时,通过所述MQ将回调的数据推送至接收方包括:如果所述MQ再次回调成功,确定发送方对应的接收方;根据所述接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理;通过所述MQ将处理后的数据推送至所述对应的接收方,以使各接收方根据自身接收权限、设置的匹配规则和字段筛选映射规则中的至少一种选择性接收数据。
现有技术中发送方获取接收方能够接收的数据形式和接收方需要接收的数据内容,根据上述获取的信息向接收方发送数据,现有技术中发送方需要对数据进行区分,从中获取各个接收方需要获取的数据,再将数据转换成各接收方能够接收的形式发送至各接收方。本发明实施例根据接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理使得接收方能够获得接收方能够接收的数据;通过MQ将处理后的数据推送至对应的接收方,以使各接收方根据自身接收权限、设置的匹配规则和字段筛选映射规则中的至少一种选择性接收数据。使得接收方能够只接收自己需要的数据,和现有技术相比本发明实施例能够减少发送方的负担。
相应的,本实施例的方法包括:
S310、如果消息队列MQ当前回调数据失败,根据预先统计的MQ的重试回调数据次数确定下次回调时间间隔。
S320、如果下次回调时间间隔到达,通过MQ再次回调数据。
S330、如果MQ再次回调成功,确定发送方对应的接收方。
其中,所述接收方为接收数据的终端,发送方为发送数据的终端。
S340、根据接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理。
其中,所述匹配规则和/或字段筛选映射规则指的是能够使得接收方能够接收接收方需要的数据的数据处理方法。具体的,根据接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理,使得接收方只接收自己需要的数据,和现有技术相比能够减少发送方的负担,例如可以是,发送方发送数据,数据内容为支付方式由支付方式一转换成支付方式二,接收方如果包括不需要支付功能的应用,不需要支付功能的应用则不需要与支付有关的数据,则可以选择不去接收。
S350、通过MQ将处理后的数据推送至对应的接收方,以使各接收方根据自身接收权限、设置的匹配规则和字段筛选映射规则中的至少一种选择性接收数据。
具体的,所述自身接收权限指的是接收方能够接收的数据的信息。例如可以是,接收方只能够接收第一类型的数据,则接收方根据自身只能够接收第一类型的数据选择性的接收数据。
可选的,也可以为本系统中设置有匹配规则和/或字段筛选映射规则,通过本系统对数据进行选择,进而使得接收方选择性的接收数据,还可以为本系统中设置有匹配规则和/或字段筛选映射规则,各接收方也设置自身接收权限、匹配规则和字段筛选映射规则,进而实现更加精准的数据选择。其中,本系统为支持本发明实施例的数据推送方法的系统。
可选的,通过所述MQ将处理后的数据推送至所述对应的接收方包括:
通过所述MQ使用POST、GET和二进制中的至少一种传输协议格式将处理后的数据推送至各接收方。
在一个具体的例子中,本发明实施例能够统一管理MQ资源,根据请求量的差异将不同发送方的请求分配到不同的MQ中,达到资源的充分利用。针对同一发送方的消息,接收方可根据自身情况设置匹配条件,只接收特定的请求,并可筛选出需要关心的部分字段,以及对字段进行改名。针对同一份发送方数据,可以按照接收方支持的格式用POST、GET乃至二进制格式进行传输。如果在调用接收方接口时,偶遇网络抖动等情况,短时内重试也是失败的,本系统有对应机制可以进行延时重试,延时间隔随重试次数逐次增加,直到接收方恢复,尽可能保证消息同步成功率。
如图4所示,本实施例的方法步骤如下:
发送方通过http/post调用将内容提交至本系统,本系统选择合适的MQ进行提交,同时将提交的内容复制一份到redis中。如果提交MQ失败,消息则被记录至db队列(db是数据库,db队列是由数据库构建的队列。mysql是db队列的一种)中,由定时任务延时重试。MQ回调本系统,回调成功则从redis中删除对应的提交记录。跟着选择发送方所对应的接收方,分别应用不同的匹配规则和字段筛选映射规则,将消息同步给接收方,如果调用失败,则进入db队列进行延时重试。所有需进入db队列的消息,如果偶遇db队列异常,则降级为使用redis。有N个并发进程在从异常队列中读取消息进行重试。对于MQ没有成功回调的请求,也有N个进程在从redis中读取数据并进行补调。如图4所示,NMQ跳点检测脚本是心跳检测,用于检测MQ能否正常工作。NMQ中的N指的是第几个MQ,也就是选择的合适的MQ。如果写入MQ失败,则将其记录在MYSQL中,如果下游没有成功接收到数据,则也将其记录在MYSQL中。时间和写入次数有关,需要在MySQL中记录失败次数,因此在MYSQL中需要有计数器,例如:第一次写入失败,5分钟之后重试,第5次写入失败,20分钟之后重试。回执接口指的是下游的接口,在MQ将数据推送至接收方的时候,MQ中的数据发送模块会在数据传输完成之后发送MQ一个数据传输成功信息,如果数据传输失败,需要向MQ发送一个数据传输失败的信息。如图4所示,Ral_multi,串口通信处理的多个线程需要协调运行,一个线程必须等待另一线程结束才能开始,在处理一个线程的同时必须把其余待处理的线程挂起等待,以减少其余待处理线程对CPU的资源占用,正处理的线程一旦处理结束则通过线程间的通信发出信号来击活被挂起的线程中的一个线程进入处理。
本发明实施例考虑在现有消费队列系统基础上,发送方和接收方之间通过简单的配置就可以解耦。宗旨是要将接口适配和漏推补偿机制抽离出来,提高可用性并节约发送方和接收方的开发成本。调用前均保存副本,回调失败延时重试,db异常,降级为使用redis等不断完善的逻辑,保障了发送方和接收方之间内容同步的成功率,做到极致高度可用。
实施例四
图5为本发明实施例四提供的一种数据推送装置的结构示意图,如图5所示,所述装置包括:回调间隔确定模块410、数据回调模块420和数据推送模块430。
其中,回调间隔确定模块410,用于如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔;
数据回调模块420,用于如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;
数据推送模块430,用于如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方。
在上述实施例的基础上,所述下次回调时间间隔随着所述重试回调数据次数的增多而增长。
在上述实施例的基础上,还包括:
第一记录模块,用于将所述当前回调数据的失败信息记录至第一设定数据库中,并记录回调数据失败的次数。
在上述实施例的基础上,还包括:数据保存模块,用于将发送方提交的数据传输至所述MQ,并将所述发送方提交的数据保存至缓存中;
传输时间间隔确定模块,用于若确定所述提交的数据传输至所述MQ失败,则根据预先记录的传输失败次数确定下次传输时间间隔;
数据传输模块,用于如果所述下次传输时间间隔到达,调取所述缓存中存储的数据再次传输至MQ中,若确定再次传输至MQ失败,重复执行确定下次传输时间间隔的操作,直至将所述提交的数据成功传输至MQ中。
在上述实施例的基础上,所述下次传输时间间隔随着所述传输失败次数的增多而增长。
在上述实施例的基础上,还包括:第二记录模块,用于若确定所述提交的数据传输至MQ失败,则将传输失败信息记录至第二设定数据库中,并记录传输失败的次数。
在上述实施例的基础上,所述数据保存模块具体用于:
根据各MQ的当前使用情况确定适合的MQ;
将所述提交的数据传输至所述适合的MQ中,并将所述提交的数据保存至缓存中。
在上述实施例的基础上,所述数据推送模块430包括:
接收方确定单元,用于如果所述MQ再次回调成功,确定发送方对应的接收方;
数据处理单元,用于根据所述接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理;
数据推送单元,用于将处理后的数据通过所述MQ推送至所述对应的接收方,以使各接收方根据自身接收权限、设置的匹配规则和字段筛选映射规则中的至少一种选择性接收数据。
在上述实施例的基础上,所述数据推送单元具体用于:
使用POST、GET和二进制中的至少一种传输协议格式通过所述MQ将处理后的数据推送至各接收方。
在上述实施例的基础上,还包括:数据调取模块,用于如果MQ回调数据失败或确定提交的数据传输至MQ失败,从缓存中调取发送方的数据。
在上述实施例的基础上,还包括:删除模块,用于若将MQ中的数据推送至接收方成功,则将所述缓存中存储的数据删除。
本实施例所述数据推送装置可以节省花费在数据发送方和接收方之间调用成功率保障逻辑和数据适配的开发工作,新增一个接收方的时候只需要简单配置一下即可生效。并且拥有逻辑保障发送方和接收方之间服务调用成功的补调逻辑,通过漏推消息补偿,保证系统高度可用。同时,本发明实施例的技术方案对其它系统模块(前提是可以异步调用)也可以发挥同样作用。
本发明实施例通过如果消息队列MQ当前回调数据失败,根据预先统计的MQ的重试回调数据次数确定下次回调时间间隔,如果下次回调时间间隔到达,通过MQ再次回调数据,如果MQ再次回调成功,通过MQ将回调的数据推送至接收方,解决了现有技术中由于MQ回调数据失败后经过固定的时间间隔再次回调数据而导致降低了MQ回调数据的成功率的问题,减少了不必要的回调次数,提高了MQ回调数据的成功率,进而能够提高数据推送的效率。
实施例五
图6为本发明实施例七提供的一种计算机设备的结构示意图。图6示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图6显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据推送方法:如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔;如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方。
实施例六
本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的数据推送方法:如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔;如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (18)

1.一种数据推送方法,其特征在于,包括:
将发送方提交的数据传输至MQ,并将所述发送方提交的数据保存至缓存中;
如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔,消息队列MQ当前回调数据失败指的是消息队列MQ未从发送方回调数据,或者未从存储有数据的缓存中回调数据,或者未从存储有数据的硬盘中回调数据;
如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;
如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方;
其中,还包括:
将所述当前回调数据的失败信息记录至第一设定数据库中,并记录回调数据失败的次数;
其中,将发送方提交的数据传输至所述MQ,并将所述发送方提交的数据保存至缓存中包括:
根据各MQ的当前使用情况分配适于数据传输的MQ;
将所述提交的数据传输至分配的MQ中,并将所述提交的数据保存至缓存中。
2.根据权利要求1所述的方法,其特征在于,所述下次回调时间间隔随着所述重试回调数据次数的增多而增长。
3.根据权利要求1所述的方法,其特征在于,所述将发送方提交的数据传输至所述MQ,并将所述发送方提交的数据保存至缓存中之后,还包括:
若确定所述提交的数据传输至所述MQ失败,则根据预先记录的传输失败次数确定下次传输时间间隔;
如果所述下次传输时间间隔到达,调取所述缓存中存储的数据再次传输至MQ中,若确定再次传输至MQ失败,重复执行确定下次传输时间间隔的操作,直至将所述提交的数据成功传输至MQ中。
4.根据权利要求3所述的方法,其特征在于,还包括:
若确定所述提交的数据传输至MQ失败,则将传输失败信息记录至第二设定数据库中,并记录传输失败的次数。
5.根据权利要求1所述的方法,其特征在于,如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方包括:
如果所述MQ再次回调成功,确定发送方对应的接收方;
根据所述接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理;
通过所述MQ将处理后的数据推送至所述对应的接收方,以使各接收方根据自身接收权限、设置的匹配规则和字段筛选映射规则中的至少一种选择性接收数据。
6.根据权利要求5所述的方法,其特征在于,通过所述MQ将处理后的数据推送至所述对应的接收方包括:
通过所述MQ使用POST、GET和二进制中的至少一种传输协议格式将处理后的数据推送至各接收方。
7.根据权利要求3所述的方法,其特征在于,还包括:
如果MQ回调数据失败或确定提交的数据传输至MQ失败,从缓存中调取发送方的数据。
8.根据权利要求3所述的方法,其特征在于,还包括:
若将MQ中的数据推送至接收方成功,则将所述缓存中存储的数据删除。
9.一种数据推送装置,其特征在于,包括:
数据保存模块,用于将发送方提交的数据传输至MQ,并将所述发送方提交的数据保存至缓存中;
回调间隔确定模块,用于如果消息队列MQ当前回调数据失败,根据预先统计的所述MQ的重试回调数据次数确定下次回调时间间隔,消息队列MQ当前回调数据失败指的是消息队列MQ未从发送方回调数据,或者未从存储有数据的缓存中回调数据,或者未从存储有数据的硬盘中回调数据;
数据回调模块,用于如果所述下次回调时间间隔到达,通过所述MQ再次回调数据;
数据推送模块,用于如果所述MQ再次回调成功,通过所述MQ将回调的数据推送至接收方;
其中,还包括:
第一记录模块,用于将所述当前回调数据的失败信息记录至第一设定数据库中,并记录回调数据失败的次数;
其中,所述数据保存模块具体用于:
根据各MQ的当前使用情况确定适合的MQ;
将所述提交的数据传输至所述适合的MQ中,并将所述提交的数据保存至缓存中。
10.根据权利要求9所述的装置,其特征在于,所述下次回调时间间隔随着所述重试回调数据次数的增多而增长。
11.根据权利要求9所述的装置,其特征在于,还包括:
传输时间间隔确定模块,用于若确定所述提交的数据传输至所述MQ失败,则根据预先记录的传输失败次数确定下次传输时间间隔;
数据传输模块,用于如果所述下次传输时间间隔到达,调取所述缓存中存储的数据再次传输至MQ中,若确定再次传输至MQ失败,重复执行确定下次传输时间间隔的操作,直至将所述提交的数据成功传输至MQ中。
12.根据权利要求11所述的装置,其特征在于,还包括:
第二记录模块,用于若确定所述提交的数据传输至MQ失败,则将传输失败信息记录至第二设定数据库中,并记录传输失败的次数。
13.根据权利要求9所述的装置,其特征在于,所述数据推送模块包括:
接收方确定单元,用于如果所述MQ再次回调成功,确定发送方对应的接收方;
数据处理单元,用于根据所述接收方设置的匹配规则和/或字段筛选映射规则对数据进行处理;
数据推送单元,用于将处理后的数据通过所述MQ推送至所述对应的接收方,以使各接收方根据自身接收权限、设置的匹配规则和字段筛选映射规则中的至少一种选择性接收数据。
14.根据权利要求13所述的装置,其特征在于,所述数据推送单元具体用于:
使用POST、GET和二进制中的至少一种传输协议格式通过所述MQ将处理后的数据推送至各接收方。
15.根据权利要求11所述的装置,其特征在于,还包括:
数据调取模块,用于如果MQ回调数据失败或确定提交的数据传输至MQ失败,从缓存中调取发送方的数据。
16.根据权利要求11所述的装置,其特征在于,还包括:
删除模块,用于若将MQ中的数据推送至接收方成功,则将所述缓存中存储的数据删除。
17.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-8中任一所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的方法。
CN201710512276.1A 2017-06-28 2017-06-28 一种数据推送方法、装置、设备以及存储介质 Active CN107341062B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710512276.1A CN107341062B (zh) 2017-06-28 2017-06-28 一种数据推送方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710512276.1A CN107341062B (zh) 2017-06-28 2017-06-28 一种数据推送方法、装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN107341062A CN107341062A (zh) 2017-11-10
CN107341062B true CN107341062B (zh) 2021-01-08

Family

ID=60218899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710512276.1A Active CN107341062B (zh) 2017-06-28 2017-06-28 一种数据推送方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN107341062B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542643B (zh) * 2018-11-16 2021-04-30 北京金山云网络技术有限公司 一种OpenStack系统中消息的恢复方法及装置
CN109873863B (zh) * 2019-01-18 2021-10-15 北京百度网讯科技有限公司 服务的异步调用方法和装置
CN109961273A (zh) * 2019-03-20 2019-07-02 广州精选速购网络科技有限公司 支付回调处理方法、系统及存储介质
CN110389879B (zh) * 2019-07-25 2023-10-31 广州方硅信息技术有限公司 获取性能数据的方法和装置
CN112346447A (zh) * 2019-08-08 2021-02-09 北京百度网讯科技有限公司 安全检测方法、安全检测模块、安全系统和自动驾驶系统
CN113392119A (zh) * 2021-06-30 2021-09-14 上海万物新生环保科技集团有限公司 一种数据一致性处理方法及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408132A (zh) * 2014-11-28 2015-03-11 北京京东尚科信息技术有限公司 数据推送方法和系统
CN104506416A (zh) * 2014-12-17 2015-04-08 东软集团股份有限公司 一种实现消息稳定推送的方法、装置及系统
CN104731912A (zh) * 2015-03-24 2015-06-24 浪潮集团有限公司 一种消息中间件mq的消息传输方法和装置
CN104811461A (zh) * 2014-01-24 2015-07-29 腾讯科技(深圳)有限公司 数据推送方法和装置
CN104954348A (zh) * 2014-03-31 2015-09-30 普华讯光(北京)科技有限公司 一种基于xmpp的可靠消息推送方法
CN104954469A (zh) * 2015-06-19 2015-09-30 长沙廖氏软件科技有限公司 一种异构系统信息交换方法
CN105095022A (zh) * 2015-07-31 2015-11-25 北京金山安全软件有限公司 一种数据备份方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104811461A (zh) * 2014-01-24 2015-07-29 腾讯科技(深圳)有限公司 数据推送方法和装置
CN104954348A (zh) * 2014-03-31 2015-09-30 普华讯光(北京)科技有限公司 一种基于xmpp的可靠消息推送方法
CN104408132A (zh) * 2014-11-28 2015-03-11 北京京东尚科信息技术有限公司 数据推送方法和系统
CN104506416A (zh) * 2014-12-17 2015-04-08 东软集团股份有限公司 一种实现消息稳定推送的方法、装置及系统
CN104731912A (zh) * 2015-03-24 2015-06-24 浪潮集团有限公司 一种消息中间件mq的消息传输方法和装置
CN104954469A (zh) * 2015-06-19 2015-09-30 长沙廖氏软件科技有限公司 一种异构系统信息交换方法
CN105095022A (zh) * 2015-07-31 2015-11-25 北京金山安全软件有限公司 一种数据备份方法及装置

Also Published As

Publication number Publication date
CN107341062A (zh) 2017-11-10

Similar Documents

Publication Publication Date Title
CN107341062B (zh) 一种数据推送方法、装置、设备以及存储介质
WO2021180025A1 (zh) 一种消息处理方法、装置、电子设备及介质
US10382380B1 (en) Workload management service for first-in first-out queues for network-accessible queuing and messaging services
CN110008041B (zh) 一种消息处理方法及装置
CN112118315A (zh) 数据处理系统、方法、装置、电子设备和存储介质
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
US20230030856A1 (en) Distributed table storage processing method, device and system
CN110633046A (zh) 一种分布式系统的存储方法、装置、存储设备及存储介质
CN110740145A (zh) 消息消费方法、装置、存储介质及电子设备
CN116627333A (zh) 日志缓存方法、装置、电子设备及计算机可读存储介质
CN112395097A (zh) 一种消息处理方法、装置、设备和存储介质
US8156374B1 (en) Problem management for outsized queues
CN111282263A (zh) 事件消息的处理方法、装置、电子设备及可读存储介质
CN110534136B (zh) 录音的方法和装置
CN111385255A (zh) 一种异步调用实现方法、装置、服务器及服务器集群
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
CN112653736A (zh) 一种并行回源方法、装置及电子设备
US10169440B2 (en) Synchronous data replication in a content management system
CN113010334A (zh) 一种请求处理方法、装置和设备
CN113760522A (zh) 一种任务处理方法和装置
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN116521639A (zh) 一种日志数据的处理方法、电子设备和计算机可读介质
CN111596864A (zh) 一种数据延时删除的方法、装置、服务器及存储介质
US8214448B2 (en) Optimized utilization of DMA buffers for incoming data packets in a network protocol
US20060010451A1 (en) Ticket mechanism for sharing computer resources

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
GR01 Patent grant
GR01 Patent grant