用于数据传输的方法、装置及计算机可读存储介质制造方法及图纸

技术编号:19703215 阅读:18 留言:0更新日期:2018-12-08 14:28
本发明专利技术实施例,生产者代理agent从第一进程间消息队列中读取生产者发送的消息数据;所述生产者agent将所述消息数据发送到redis;消费者agent从所述redis中读取消息数据,并将所述消息数据写入到第二进程间消息队列,以使消费者从所述第二进程间消息队列读取到所述消息数据。一方面,生产者和消费者不需要网络交互,另一方面,基于redis实现了高性能、高并发、高可用的消息中间件。

【技术实现步骤摘要】
用于数据传输的方法、装置及计算机可读存储介质
本专利技术涉及计算机
,具体而言,涉及一种用于数据传输的方法、装置及计算机可读存储介质。
技术介绍
消息中间件是为分布式应用之间提供高效、可靠、平台无关的数据传输服务的一种技术,通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。目前开源的分布式消息中间件有很多,比如ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka等等,它们各有特点,各有自己的独特设计,并选用一种开发语言进行开发实现。图1是根据一示例性实施例示出的消息中间件的示意图。消息生产者和消息消费者通过网络和消息服务器交互。一方面,生产者和消费者通过网络和消息中间件交互,性能受网络交互的限制,另一方面,消息服务器需要实现网络io处理、异步事件处理、消息队列、消息落地(持久化)、消息去重(去除重复消息)、消息确认与删除、消息订阅管理及消息主备同步等处理,实现复杂,开发成本巨大。因此,需要一种新的用于数据传输的方法、装置及计算机可读存储介质。在所述
技术介绍
部分公开的上述信息仅用于加强对本专利技术的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
有鉴于此,本专利技术提供一种新的用于数据传输的方法、装置及计算机可读存储介质,生产者和消费者不需要网络交互,基于redis实现一个高性能、高并发、高可用、完整的消息中间件。本专利技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本专利技术的实践而习得。根据本专利技术的第一方面,提供一种用于数据传输的方法,所述方法包括:生产者代理agent从第一进程间消息队列中读取生产者写入的消息数据;所述生产者agent将所述消息数据发送到redis;消费者agent从所述redis中读取消息数据,并将所述消息数据写入到第二进程间消息队列,以使消费者从所述第二进程间消息队列读取到所述消息数据。根据一些实施例,所述消息数据包括主题标识;所述生产者agent将所述消息数据发送到redis包括:所述生产者agent将具有相同主题标识的消息数据发送到对应的redis。根据一些实施例,redis以列表的数据形式存储消息数据;所述生产者agent将具有相同主题标识的消息数据发送到对应的redis,包括:所述生产者agent将序列化的消息数据发送到与所述消息数据的主题标识对应的redis中。根据一些实施例,所述方法还包括:在第一哈希表中记录已经发送到redis中的消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系;所述生产者agent将所述消息数据发送到redis,包括:所述生产者agent在所述第一哈希表中查找是否存在所述消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系;如果是,所述生产者agent丢弃所述消息数据;如果否,所述生产者agent将所述消息数据发送到redis,并更新所述第一哈希表。根据一些实施例,所述消费者agent从所述redis中读取消息数据,包括:所述消费者agent遍历redis,查找到与消费者订阅的消息数据的主题标识对应的redis,从redis中读取消息数据。根据一些实施例,所述方法还包括:在有序集合中记录消息数据的主题标识、订阅所述消息数据的主题标识的消费者标识以及所述消费者标识对应的待消费的消息标识;所述从redis中读取消息数据,包括:所述消费者agent根据所述有序集合,从所述列表中读取消息数据。根据一些实施例,所述方法还包括:在第二哈希表中记录各消费者标识、各消费者已经读取的消息数据的消息标识、以及各消费者标识上次读取的消息标识三者的对应关系;所述消费者agent比较本次读取的消息数据的消息标识与上次读取的消息标识是否一致;如果一致,所述生产者agent丢弃所述消息数据;如果不一致,所述生产者agent将所述消息数据写入到第二进程间消息队列。根据一些实施例,所述方法还包括:如果所述消费者agent读取消息数据超时,所述消费者agent根据所述第二哈希表重新读取消息数据。根据本专利技术的第二方面,提供一种用于数据传输的装置,所述装置包括:读取模块,用于从第一进程间消息队列中读取生产者发送的消息数据;发送模块,用于将所述消息数据发送到redis;写入模块,用于从所述redis中读取消息数据,并将所述消息数据写入到第二进程间消息队列,以使消费者从所述第二进程间消息队列读取到所述消息数据。根据一些实施例,所述消息数据包括主题标识;所述发送模块,配置为将具有相同主题标识的消息数据发送到对应的redis。根据一些实施例,所述装置还包括:存储模块,用于以列表的数据形式存储消息数据;所述发送模块,配置为将序列化的消息数据发送到与所述消息数据的主题标识对应的redis中。根据一些实施例,所述装置还包括:记录模块,用于在第一哈希表中记录已经发送到redis中的消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系;所述发送模块包括:查找单元,用于在所述第一哈希表中查找是否存在所述消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系;丢弃单元,用于在所述查找单元查找到存在所述消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系时,丢弃所述消息数据;发送单元,用于在所述查找单元没有查找到所述消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系时,将所述消息数据发送到redis,并更新哈希表。根据本专利技术的第三方面,提供一种用于数据传输的装置,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面中的方法。根据本专利技术的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面中的方法。本专利技术实施例中,生产者代理agent从第一进程间消息队列中读取生产者发送的消息数据;所述生产者agent将所述消息数据发送到redis;消费者agent从所述redis中读取消息数据,并将所述消息数据写入到第二进程间消息队列,以使消费者从所述第二进程间消息队列读取到所述消息数据。一方面,生产者和消费者不需要网络交互,另一方面,基于redis实现了高性能、高并发、高可用的消息中间件。附图说明通过参照附图详细描述其示例实施例,本专利技术的上述和其它目标、特征及优点将变得更加显而易见。图1是根据一示例性实施例示出的消息中间件的示意图。图2是根据一示例性实施例示出的一种用于数据传输的方法的流程图。图3是根据一示例性实施例示出以列表类型存储的消息数据。图4示意性示出了本专利技术实施例提供的一种第一哈希表。图5示意性示出了本专利技术实施例提供的一种有序集合。图6示意性示出了本专利技术实施例提供的一种第二哈希表。图7是根据一示例性实施例示出的一种用于数据传输的装置的结构图。图8是根据一示例性实施例示出的一种适于用来实现本申请实施例的装置的计算机系统800的结构示意图。具体实施方式现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反本文档来自技高网...

【技术保护点】
1.一种用于数据传输的方法,其特征在于,所述方法包括:生产者代理agent从第一进程间消息队列中读取生产者写入的消息数据;所述生产者agent将所述消息数据发送到redis;消费者agent从所述redis中读取消息数据,并将所述消息数据写入到第二进程间消息队列,以使消费者从所述第二进程间消息队列读取到所述消息数据。

【技术特征摘要】
1.一种用于数据传输的方法,其特征在于,所述方法包括:生产者代理agent从第一进程间消息队列中读取生产者写入的消息数据;所述生产者agent将所述消息数据发送到redis;消费者agent从所述redis中读取消息数据,并将所述消息数据写入到第二进程间消息队列,以使消费者从所述第二进程间消息队列读取到所述消息数据。2.如权利要求1所述的方法,其特征在于,所述消息数据包括主题标识;所述生产者agent将所述消息数据发送到redis包括:所述生产者agent将具有相同主题标识的消息数据发送到对应的redis。3.如权利要求2所述的方法,其特征在于,redis以列表的数据形式存储消息数据;所述生产者agent将具有相同主题标识的消息数据发送到对应的redis,包括:所述生产者agent将序列化的消息数据发送到与所述消息数据的主题标识对应的redis中。4.如权利要求1所述的方法,其特征在于,所述方法还包括:在第一哈希表中记录已经发送到redis中的消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系;所述生产者agent将所述消息数据发送到redis,包括:所述生产者agent在所述第一哈希表中查找是否存在所述消息数据的主题标识、消息标识以及发送所述消息数据的生产者标识三者的对应关系;如果是,所述生产者agent丢弃所述消息数据;如果否,所述生产者agent将所述消息数据发送到redis,并更新所述第一哈希表。5.如权利要求3所述的方法,其特征在于,所述消费者agent从所述redis中读取消息数据,包括:所述消费者agent遍历redis,查找到与消费者订阅的消息数据的主题标识对应的redis,从redis中读取消息数据。6.如权利要求5所述的方法,其特征在于,所述方法还包括:在有序集合中记录消息数据的主题标识、订阅所述消息数据的主题标识的消费者标识以及所述消费者标识对应的待消费的消息标识;所述从redis中读取消息数据,包括:所述消费者agent根据所述有序集合,从所述列表中读取消息数据。7.如权利要求6所述的方法,其特征在于,所述方法还包括:在第二哈希表中记录各消费者标识、各消费者已经读取的消息数据的消息标识、以及各消费者标识上次读取的消息标识三者的对应关系;所述消费者agent...

【专利技术属性】
技术研发人员:聂启忠
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1