一种微信公众号交易结果推送方法及系统
文献发布时间:2023-06-19 09:27:35
技术领域
本发明涉及微信消息发送处理技术领域,具体来说,涉及一种微信公众号交易结果推送方法及系统。
背景技术
目前商户微信公众号收单交易结果推送功能比较弱,消息在推送过程中容易发生丢失,导致没有推送成功,或者推送失败没有重复推送机制,导致缺少消息推送。
另一种则是推送消息保存入库,另一个线程不断循环查询更新数据,单线程处理消息过慢造成消息堆积在数据库导致推送不及时,数据库是一个单点可能会出现单点故障,并发读写处理如果消息过大可能会出现延迟等故障,容易造成数据库读写删压力过大,磁盘i o过高导致整个流程耗时加长,不能够及时推送消息。
发明内容
为了克服现有技术的不足,本发明的一种微信公众号交易结果推送方法及系统能够解决当前消息推送因网络各种问题导致推送失败没有在次推送的问题。
本发明解决其技术问题所采用的技术方案是:一种微信公众号交易结果推送方法,其改进之处在于,包括下列步骤:
S1:消息生产并将交易结果发送至消息处理模块;
S2:消息处理模块对交易结果信息进行组装处理并将处理结果推送至服务器,若消息推送失败或网络异常,则将消息保存入库,等待失败的消息重新推送;
S3:服务器响应消息并将消息推送给consumer模块,consumer模块将消息推送至微信公众号消息推送接口,同时将推送结果返回给消息处理模块的判断单元进行判断;
S4:若消息推送成功,则结束操作;
S5:若消息推送失败或网络异常,consumer模块会响应服务器,服务器做幂等性将消息重新推送给consumer模块。
作为上述技术方案的改进,步骤S1中,交易结果发送至消息处理模块时,如果消息处理模块的判断单元判断到发送不成功,则将失败消息重新推送,同时将推送失败的消息入库保存。
作为上述技术方案的进一步改进,步骤S2中,消息处理模块将处理结果推送至服务器时,如果消息处理模块的判断单元判断到发送不成功,则将失败消息重新推送,同时将推送失败的消息入库保存。
作为上述技术方案的进一步改进,在步骤S3中,所述服务器将消息推送给consumer模块时,如果服务器的判断单元判断出发送不成功,则将失败消息重新推送。
作为上述技术方案的进一步改进,步骤S4中,所述微信公众号消息接口模块会响应消息推送结果,微信公众号消息接口模块的判断单元若判断消息推送成功,则结束操作,若判断消息推送失败或网络异常,服务器加载推送失败的消息并重新推送。
作为上述技术方案的进一步改进,所述微信公众号消息接口模块的判断单元、消息处理模块的判断单元以及服务器的判断单元均为同一个判断单元。
作为上述技术方案的进一步改进,所述服务器为RockrtMQServer服务器。
作为上述技术方案的进一步改进,所述consumer模块设有一个可以向服务器拉取消费信息的链路通道。
一种微信公众号交易结果推送系统,其改进之处在于,包括生产系统、消息处理模块、服务器、consumer模块、微信公众号消息接口模块、存储模块以及判断单元,所述生产系统、消息处理模块、服务器以及微信公众号消息接口模块依次连接;
所述生产系统包括多个生产单元,多个所述生产单元用于生产信息,所述消息处理模块用于对交易结果信息进行组装处理并将处理结果推送至服务器,所述服务器用于响应消息并将消息推送给consumer模块,所述consumer模块用于接收服务器发送的消息或者用于自动向服务器拉取消息,所述微信公众号消息接口模块用于接收consumer模块的消息并推送该消息至公众号界面,所述判断单元用于判断生产系统、消息处理模块、服务器、consumer模块及微信公众号消息接口模块的消息发送是否成功,所述存储模块用于存储发送失败的消息。
本发明的有益效果是:可以解决当前消息推送因网络各种问题导致推送失败没有在次推送问题,解决单个数据库处理数据的问题,提高消息并发推送时效性,消息生产和消息消费推送可重试机制提高可靠性。
附图说明
图1为本发明的整体流程框架图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。另外,专利中涉及到的所有联接/连接关系,并非单指构件直接相接,而是指可根据具体实施情况,通过添加或减少联接辅件,来组成更优的联接结构。本发明创造中的各个技术特征,在不互相矛盾冲突的前提下可以交互组合。
参考图1,本发明揭示了一种微信公众号交易结果推送方法,包括下列步骤:
S1:消息生产并将交易结果发送至消息处理模块;
S2:消息处理模块对交易结果信息进行组装处理并将处理结果推送至服务器,若消息推送失败或网络异常,则将消息保存入库,等待失败的消息重新推送;
S3:服务器响应消息并将消息推送给consumer模块,consumer模块将消息推送至微信公众号消息推送接口,同时将推送结果返回给消息处理模块的判断单元进行判断;
S4:若消息推送成功,则结束操作;
S5:若消息推送失败或网络异常,consumer模块会响应服务器,服务器做幂等性将消息重新推送给consumer模块。
在上述实施例中,步骤S1中,交易结果发送至消息处理模块时,如果消息处理模块的判断单元判断到发送不成功,则将失败消息重新推送,同时将推送失败的消息入库保存;步骤S2中,消息处理模块将处理结果推送至服务器时,如果消息处理模块的判断单元判断到发送不成功,则将失败消息重新推送,同时将推送失败的消息入库保存;在步骤S3中,所述服务器将消息推送给consumer模块时,如果服务器的判断单元判断出消息发送不成功,则将失败消息重新推送;步骤S4中,所述微信公众号消息接口模块会响应消息推送结果,微信公众号消息接口模块的判断单元若判断消息推送成功,则结束操作,若判断消息推送失败或网络异常,服务器加载推送失败的消息并重新推送。所述微信公众号消息接口模块的判断单元、消息处理模块的判断单元以及服务器的判断单元均为同一个判断单元。
本发明的消息处理模块包括多个消息处理单元,消费结果消息收集到消息处理模块时,由各个消息处理单元对交易结果信息进行组装处理并将处理结果推送至服务器,避免所有消息数据集中在一个大环境内进行处理时,数据过大时系统奔溃的现象发生。
本发明的consumer模块包括多个consumer单元,将服务器发送的消息存入consumer单元进行处理,避免所有消息数据集中在一个大的环境内进行处理时,数据过大时系统奔溃的现象发生,将消息划分进各个consumer单元单独处理,就算发生错误也不会影响其他consumer单元的消息处理过程,而且避免了维修人员大海捞针似的找出出错误consumer单元,既能够节省时间又能够避免造成整个系统奔溃,而且consumer单元用于自动向服务器拉取消息。解决单个数据库处理数据的问题,提高消息并发推送时效性。
本发明的各个生产单元系统生产消息,并将交易结果发送至消息处理模块,消息处理模块对消息进行组装处理,再将处理过后的消息推送到服务器,服务器响应消息并将处理过后的消息发送给consumer模块,或者consumer模块主动向服务器拉取消息,所述consumer模块一边返回推送结果给服务器进行判断消息是否发送成功,另一边推送至微信公众号消息接口模块:
consumer模块返回推送结果至RocketMQ Server服务器时,通过判断单元判断消息推送结果,如果消息推送失败或网络异常等则将消息保存至存储模块,RocketMQ Server服务器加载推送失败消息并重新推送,如果成功则结束。
consumer模块推送至微信公众号消息接口模块时,微信公众号消息接口模块响应推送结果并通过判断单元判断消息推送结果,响应消费消息成功则结束,或响应消费消息失败,根据幂等性重新响应消费消息。可以解决当前消息推送因网络各种问题导致推送失败没有在次推送问题。
进一步的,所述服务器为RockrtMQServer服务器。所述RocketMQ是一个分布式消息传递平台,具有低延迟、高性能和可靠性、万亿级别的容量和灵活的可伸缩性,消息失败重试机制,满足本系统消息重新发送的需求。
再进一步的,所述consumer模块设有一个可以向服务器拉取消费信息的链路通道,所述consumer模块可以将消费信息推送至微信公众号消息接口模块,微信公众号消息模块不定时向使用者展示广告内容,满足使用该系统的商家推送广告的需求,促进消费,而且通过微信公众号消息接口模块向使用者推送广告可以让使用者了解当下流行的产品,提高使用者的体验感。
一种微信公众号交易结果推送系统,包括生产系统、消息处理模块、服务器、consumer模块、微信公众号消息接口模块、存储模块以及判断单元,所述生产系统、消息处理模块、服务器以及微信公众号消息接口模块依次连接,所述生产系统包括多个生产单元,多个所述生产单元用于生产信息,所述消息处理模块用于对交易结果信息进行组装处理并将处理结果推送至服务器,所述服务器用于响应消息并将消息推送给consumer模块,所述consumer模块用于接收服务器发送的消息或者用于自动向服务器拉取消息,所述微信公众号消息接口模块用于接收consumer模块的消息并推送该消息至公众号界面,所述判断单元用于判断生产系统、消息处理模块、服务器、consumer模块及微信公众号消息接口模块的消息发送是否成功,所述存储模块用于存储发送失败的消息。
本发明的消息处理模块包括多个消息处理单元,消费结果消息收集到消息处理模块时,由各个消息处理单元对交易结果信息进行组装处理并将处理结果推送至服务器,避免所有消息数据集中在一个大环境内进行处理时,数据过大时系统奔溃的现象发生。
本发明的consumer模块包括多个consumer单元,将服务器发送的消息存入consumer单元进行处理,避免所有消息数据集中在一个大的环境内进行处理时,数据过大时系统奔溃的现象发生,将消息划分进各个consumer单元单独处理,就算发生错误也不会影响其他consumer单元的消息处理过程,而且避免了维修人员大海捞针似的找出出错误consumer单元,既能够节省时间又能够避免造成整个系统奔溃,而且consumer单元用于自动向服务器拉取消息。解决单个数据库处理数据的问题,提高消息并发推送时效性。
在上述实施例中,各个生产单元系统生产消息,并将交易结果发送至消息处理模块,消息处理模块对消息进行组装处理,再将处理过后的消息推送到RocketMQ Server服务器,RocketMQ Server服务器响应消息并将处理过后的消息发送给consumer模块,或者consumer模块主动向RocketMQ Server服务器拉取消息,所述consumer模块一边返回推送结果给RocketMQ Server服务器,另一边推送至微信公众号消息接口模块:
consumer模块返回推送结果至RocketMQ Server服务器时,通过判断单元判断消息推送结果,如果消息推送失败或网络异常等则将消息保存至存储模块,RocketMQ Server服务器加载推送失败消息并重新推送,如果成功则结束。
consumer模块推送至微信公众号消息接口模块时,微信公众号消息接口模块响应推送结果并通过判断单元判断消息推送结果,响应消费消息成功则结束,或响应消费消息失败,根据幂等性重新响应消费消息。可以解决当前消息推送因网络各种问题导致推送失败没有在次推送问题。
当消息发送到RocketMQ Server时如果出现失败会自动进行重发,默认重试三次,consumer模块的重试,如果消息因为各种原因没有消费成功,一般情况如果是因为网络等问题,会自动加入到重试队列。
本发明的有益效果是:可以解决当前消息推送因网络各种问题导致推送失败没有在次推送问题,解决单个数据库处理数据的问题,提高消息并发推送时效性,消息生产和消息消费推送可重试机制提高可靠性。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围。
- 一种微信公众号交易结果推送方法及系统
- 将交易作为推送支付交易进行处理的系统、方法和计算机程序产品