实现消息一次送达的消息中间件辅助系统及消息传送系统技术方案

技术编号:22081368 阅读:25 留言:0更新日期:2019-09-12 16:09
本发明专利技术公开了一种实现消息一次送达的消息中间件辅助系统及消息传送系统,属于业务传送领域,要解决的技术问题为如何实现消息的一次送达;其结构包括包括:消息发送附加模块,所述消息发送附加模块用于通过注解指定适配器以匹配消息中间件,用于在调用消息中间件的client程序发送消息时生成唯一码并将唯一码注入消息的properties对象中;消息接收附加模块,所述消息接收附加模块用于通过注解指定适配器以匹配消息中间件,用于当与内存型KV数据库连接失败时指定处理逻辑,并用于在调用消息中间件的clinet程序接收消息之前去重唯一码。该系统包括消息中间件、业务系统辅助系统和内存型KV数据库。

Message Middleware Assistant System and Message Transfer System for One-time Message Delivery

【技术实现步骤摘要】
实现消息一次送达的消息中间件辅助系统及消息传送系统
本专利技术涉及业务传送领域,具体地说是一种实现消息一次送达的消息中间件辅助系统及消息传送系统。
技术介绍
目前互联网领域中,存在不少高性能的消息中间件,其用途是在高并发的网络交易环境中,承担消息异步送达的基本责任,为了实现更高的并发能力,高性能中间件的目标是“保证消息至少一次送达”这种语义,因此开源消息中间件中没有产品能够实现“保证只一次送达”这种语义。如何实现消息的一次送达,是需要解决的技术问题。
技术实现思路
本专利技术的技术任务是针对以上不足,提供一种实现消息一次送达的消息中间件辅助系统及消息传送系统,来解决如何实现消息的一次送达的问题。第一方面,本专利技术提供实现消息一次送达的消息中间件辅助系统,包括:消息发送附加模块,所述消息发送附加模块用于通过注解指定适配器以匹配消息中间件,用于在调用消息中间件的client程序发送消息时生成唯一码并将唯一码注入消息的properties对象中;消息接收附加模块,所述消息接收附加模块用于通过注解指定适配器以匹配消息中间件,用于当与内存型KV数据库连接失败时指定处理逻辑,并用于在调用消息中间件的clinet程序接收消息之前去重唯一码。作为优选,消息发送附加模块用于在调用消息中间件的client程序发送消息时通过切面编程的方式生成唯一码。作为优选,唯一码为采用UUID通用模式生成的方式+时间戳组成的组合码,所述时间戳为毫米级时间戳。作为优选,消息接收附加模块用于在调用消息中间件的client程序发送消息之前通过切面编程的方式注入去重唯一码。作为优选,消息接收附加模块用于通过如下步骤在调用消息中间件的client程序发送消息之前通过切面编程的方式注入去重唯一码:从properties对象中取出唯一码;持有唯一码、尝试在内存型KV数据库存储唯一码,并接收返回代码;如果返回代码为已存在,中断处理流程,如果返回代码为存储成功,所述消息进入业务流程处理,如果返回代码为通讯错误,根据指定的当与内存型KV数据库连接失败时的处理逻辑处理消息。作为优选,消息接收附加模块用于当与内存型KV数据库连接失败时的通过注解指定处理逻辑,并指定处理逻辑为:fail_back,所述fail_back表示遇到通讯失败时,消息在消息中间件中阻塞,直到恢复通讯;fail_over,所述fail_over表示遇到通讯失败时,忽略去重逻辑,消息直接抛给业务处理。作为优选,消息发送附件模块通过注解指定适配器以匹配消息中间件时,适配器至少支持rocketmq和kafka;消息接收附件模块通过注解指定适配器以匹配消息中间件时,适配器至少支持rocketmq和kafka。第二方面,本专利技术提供实现消息一次送达的消息传送系统,包括:消息中间件,所述消息中间件为开源消息中间件;业务系统,所述业务系统至少两个,业务系统之间通过消息中间件对接;辅助系统,所述辅助系统为如第一方面任一项所述的实现消息一次送达的消息中间件辅助系统;内存型KV数据库,所述内存型数据库与消息接收附加模块连接。作为优选,所述于业务系统为Java开发的业务系统,且编译版本1.7及以上。本专利技术的实现消息一次送达的消息中间件辅助系统及消息传送系统具有以下优点:在不增加软件投入的情况,实现业务系统之间消息传递时的幂等去重,省去了软件投入成本。附图说明为了更清除地说明本专利技术实施例中的技术方案,下面将对实施例中描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。下面结合附图对本专利技术进一步说明。附图1为实施例1实现消息一次送达的消息中间件辅助系统的工作框图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步说明,以使本领域的技术人员可以更好地理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定,在不冲突的情况下,本专利技术实施例以及实施例中的技术特征可以相互结合。需要理解的是,在本专利技术实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本专利技术实施例中的“多个”,是指两个或两个以上。本专利技术实施例提供实现消息一次送达的消息中间件辅助系统及消息传送系统,用于解决如何实现消息的一次送达的技术问题。实施例1:本专利技术的实现消息一次送达的消息中间件辅助系统,包括消息发送附加模块和消息接收附加模块,消息发送附加模块和消息接收附加模块辅助消息中间件实现业务系统之间信息的一次送达。消息发送附加模块为采用注解方式开发的,通过注解指定适配器以匹配消息中间件,适配器至少支持rocketmq和kafka。消息发送附加模块用于在调用消息中间件的client程序发送消息时生成唯一码并将唯一码注入消息的properties对象中。该唯一码用于将当前消息与其他消息区别开,本实施例中唯一码为采用UUID通用模式生成的方式+时间戳组成的组合码,时间戳为毫米级时间戳,在实际应用中也包括其他方式生成的在高并发场景下,使一条消息区别与其他消息的编码。消息接收附加模块为采用注解方式开发的,通过注解指定适配器以匹配消息中间件,适配器至少支持rocketmq和kafka。消息接收附加模块应当与内存型KV数据库连接失败时指定处理逻辑,并在注解中指定,处理方式包括如下两种方式:fail_back,所述fail_back表示遇到通讯失败时,消息在消息中间件中阻塞,直到恢复通讯;fail_over,所述fail_over表示遇到通讯失败时,忽略去重逻辑,消息直接抛给业务处理。消息接收附加模块在调用消息中间件的client程序发送消息之前通过切面编程的方式注入去重唯一码消息,去重唯一码通过如下步骤实现:从properties对象中取出唯一码;持有唯一码、尝试在内存型KV数据库存储唯一码,并接收返回代码;如果返回代码为已存在,说明此消息重复,中断处理流程,如果返回代码为存储成功,说明此消息未被消费,消息进入业务流程处理,如果返回代码为通讯错误,说明内存型KV数据库不可用,根据指定的当与内存型KV数据库连接失败时的处理逻辑处理消息。实施例2:本专利技术的实现消息一次送达的消息传送系统,包括消息中间件、业务系统、辅助系统、内存型KV数据库。消息中间件为开源消息中间件。业务系统共两个,分别为第一业务系统和第二业务系统,第一业务系统作为发送端,配置有消息发送附加模块,第二业务系统作为接收端,配置有消息接收附加模块,第一业务系统和第二业务系统通过消息中间件对接,消息接收附加模块与内存型KV数据库连接。上述两个业务系统为Java开发的业务系统,且编译版本1.7及以上。实际应用中,业务系统并不限于两个可为多个,且消息发送附加模块用于作为发送端的业务系统,消息接收附加模块用于作为接收端的业务系统,如果一个业务系统作为发送端同时作为接收端,则该业务系统中同时配置有消息发送附加模块和消息接收附加模块。该消息传送系统传送方式为:通过消息发送附加模块通过注解指定适配器类型,与消息中间件匹配;通过消息发送附加模块调用消息中间件的client程序发送消息时,利用切面编程的方式注入唯一码生成逻辑,生成唯一本文档来自技高网...

【技术保护点】
1.实现消息一次送达的消息中间件辅助系统,其特征在于包括:消息发送附加模块,所述消息发送附加模块用于通过注解指定适配器以匹配消息中间件,用于在调用消息中间件的client程序发送消息时生成唯一码并将唯一码注入消息的properties对象中;消息接收附加模块,所述消息接收附加模块用于通过注解指定适配器以匹配消息中间件,用于当与内存型KV数据库连接失败时指定处理逻辑,并用于在调用消息中间件的clinet程序接收消息之前去重唯一码。

【技术特征摘要】
1.实现消息一次送达的消息中间件辅助系统,其特征在于包括:消息发送附加模块,所述消息发送附加模块用于通过注解指定适配器以匹配消息中间件,用于在调用消息中间件的client程序发送消息时生成唯一码并将唯一码注入消息的properties对象中;消息接收附加模块,所述消息接收附加模块用于通过注解指定适配器以匹配消息中间件,用于当与内存型KV数据库连接失败时指定处理逻辑,并用于在调用消息中间件的clinet程序接收消息之前去重唯一码。2.根据权利要求1所述的实现消息一次送达的消息中间件辅助系统,其特征在于消息发送附加模块用于在调用消息中间件的client程序发送消息时通过切面编程的方式生成唯一码。3.根据权利要求2所述的实现消息一次送达的消息中间件辅助系统,其特征在于唯一码为采用UUID通用模式生成的方式+时间戳组成的组合码,所述时间戳为毫米级时间戳。4.根据权利要求1所述的实现消息一次送达的消息中间件辅助系统,其特征在于消息接收附加模块用于在调用消息中间件的client程序发送消息之前通过切面编程的方式注入去重唯一码。5.根据权利要求4所述的实现消息一次送达的消息中间件辅助系统,其特征在于消息接收附加模块用于通过如下步骤在调用消息中间件的client程序发送消息之前通过切面编程的方式注入去重唯一码:从properties对象中取出唯一码;持有唯一码、尝试在内存型KV数据库存储唯一码,并接收返回代码;如果返回代码...

【专利技术属性】
技术研发人员:张田张鹏
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1