一种基于redis存储作为消息中间件的数据传输方法技术

技术编号:28672735 阅读:14 留言:0更新日期:2021-06-02 02:48
本发明专利技术提出了一种基于redis存储作为消息中间件的数据传输方法,包括:生产者将消息数据发送到redis,redis向生产者确认接受到消息数据;redis从消息队列中读取生产者写入的消息数据,并向消费者确认消费数据;消费者从redis中读取消息数据,并将消息数据写入到消息队列,以使消费者从消息队列读取到消息数据,并向redis返回数据。本发明专利技术通过redis集群,保证数据存储在内存也不会应为单独服务器挂掉导致数据丢失;数据至少被消费一次,通过消息确认消费机制,保证每次消息消费都可以被消费,如果出现网络抖动或其他异常情况,可能导致消息确认机制没能及时传到中间件,导致重复消费情况,消费者需要在业务上处理消息幂等性问题。

【技术实现步骤摘要】
一种基于redis存储作为消息中间件的数据传输方法
本专利技术涉及计算机
,尤其涉及一种基于redis存储作为消息中间件的数据传输方法。
技术介绍
消息中间件是为分布式应用之间提供高效、可靠、平台无关的数据传输服务的一种技术,通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。在多网段的条件下,消息中间件部署在一个网段,生成者部署在另外一个网段,消费者部署在其他网段,在这种场景下,目前开源的分布式消息中间件有很多,比如ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka等等,它们各有特点,各有自己的独特设计,并选用一种开发语言进行开发实现。现有的主流消息中间件支持的情况相对比较不足。例如:rabbitmq不支持跨网段生产消费;rocketmq不支持跨网段生产消费;kafka支持跨网段生产消费,不过需要设置多个端口进行监听,提高网络端口权限配置难度。因此,需为了满足不同网段消息中间件功能的需求,设计了基于redis作为数据存储,以netty框架作为网络传输组件的消息中间件。
技术实现思路
为了解决现有技术所存在的问题,本专利技术提出的基于redis存储作为消息中间件的数据传输方法。为了实现上述目的,本专利技术采用了如下技术方案:基于redis存储作为消息中间件的数据传输方法,所述方法包括:生产者将消息数据发送到redis,所述redis向生产者确认接受到消息数据;所述redis从消息队列中读取生产者写入的消息数据,并向消费者确认消费数据;消费者从所述redis中读取消息数据,并将所述消息数据写入到消息队列,以使消费者从消息队列读取到所述消息数据,并向所述redis返回数据。优选的,所述redis采用NIO多路复用,使用redis集群,使用redis异步刷盘。优选的,所述生产者的消息数据采用一笔一笔的方式发送。优选的,所述消费者接收所述消息数据按系统配置,一批批发送。优选的,所述redis的消息应用对外提供的方法为:11、booleanaddTopic(Stringtopic);添加消息主题;12、booleanaddGroup(Stringgroup);添加消费组;13、List<Object>getGroupTopicInfo(Stringgroup,Stringtopic);为指定消费组获取特定的消息主题信息;14、BooleansendTopicInfo(Stringtopic,Objectinfos);接收相关消费主题的信息;15、isConfirmComsumer(Stringhashkey)确认消息消费;16、ObjectgetGroupTopicInfoByOffset(Stringgroup,Stringtopic,intoffset);获取特定消费位置的信息。优选的,所述redis的消息应用对内系统方法为:21、groupOffset(intoffset)消息组消费位置设置;22、syncStorge()redis数据强制存储在磁盘中;23、fileOff()当数据超过一定数量时,做数据归档,并同步更新各消费者的消费位置。优选的,所述redis的数据存储类型包括:31:List<String>topicList消息主题列表,用来记录消息主题信息,提供消息主题查询,添加,删除;32:list<String>groupList消费组列表,用来记录消费组信息,提供消费组查询,添加,删除;33:List<Objct>infosObject对应消息主题的消息存储队列;34:intgroupTopicOffset消费组对应的消费主题的消费位置。与现有技术相比,本专利技术通过redis集群,保证数据存储在内存也不会应为单独服务器挂掉导致数据丢失;数据至少被消费一次,通过消息确认消费机制,保证每次消息消费都可以被消费,如果出现网络抖动或其他异常情况,可能导致消息确认机制没能及时传到中间件,导致重复消费情况,消费者需要在业务上处理消息幂等性问题;由于业务突然报增,导致生产者产生过多消息,消费者来不及消费,可以横向扩容消费者数量。附图说明图1为本专利技术数据传输方法的示意图;图2为本专利技术数据队列的传输示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。本实施例提供的基于redis存储作为消息中间件的数据传输方法,如图1、2所示,所述方法包括:生产者将消息数据发送到redis,所述redis向生产者确认接受到消息数据;所述redis从消息队列中读取生产者写入的消息数据,并向消费者确认消费数据;消费者从所述redis中读取消息数据,并将所述消息数据写入到消息队列,以使消费者从消息队列读取到所述消息数据,并向所述redis返回数据。其中,redis采用NIO多路复用,保证系统支持高并发请求。使用redis集群,保证缓存的高可用。使用redis异步刷盘,既保证数据使用的效率,也保证数据的安全性。生产者的消息数据采用一笔一笔的方式发送,保证数据的时序性。消费者接收所述消息数据按系统配置,一批批发送。redis的消息应用对外提供的方法为:11、booleanaddTopic(Stringtopic);添加消息主题;12、booleanaddGroup(Stringgroup);添加消费组;13、List<Object>getGroupTopicInfo(Stringgroup,Stringtopic);为指定消费组获取特定的消息主题信息;14、BooleansendTopicInfo(Stringtopic,Objectinfos);接收相关消费主题的信息;15、isConfirmComsumer(Stringhashkey)确认消息消费;16、ObjectgetGroupTopicInfoByOffset(Stringgroup,Stringtopic,intoffset);获取特定消费位置的信息。redis的消息应用对内系统方法为:21、groupOffset(intoffset)消息组消费位置设置;22、syncStorge()redis数据强制存储在磁盘中;23、fileOff()当数据超过一定数量时,做数据归档,并同步更新各消费者的消费位置。redis的数据存储类型包括:31:List<String>topicList消息主题列表,用来记录消息主题信息,提供消息主题查询,添加,删除;32:l本文档来自技高网...

【技术保护点】
1.一种基于redis存储作为消息中间件的数据传输方法,其特征在于,所述方法包括:/n生产者将消息数据发送到redis,所述redis向生产者确认接受到消息数据;/n所述redis从消息队列中读取生产者写入的消息数据,并向消费者确认消费数据;/n消费者从所述redis中读取消息数据,并将所述消息数据写入到消息队列,以使消费者从消息队列读取到所述消息数据,并向所述redis返回数据。/n

【技术特征摘要】
1.一种基于redis存储作为消息中间件的数据传输方法,其特征在于,所述方法包括:
生产者将消息数据发送到redis,所述redis向生产者确认接受到消息数据;
所述redis从消息队列中读取生产者写入的消息数据,并向消费者确认消费数据;
消费者从所述redis中读取消息数据,并将所述消息数据写入到消息队列,以使消费者从消息队列读取到所述消息数据,并向所述redis返回数据。


2.根据权利要求1所述的基于redis存储作为消息中间件的数据传输方法,其特征在于,所述redis采用NIO多路复用,使用redis集群,使用redis异步刷盘。


3.根据权利要求1所述的基于redis存储作为消息中间件的数据传输方法,其特征在于,所述生产者的消息数据采用一笔一笔的方式发送。


4.根据权利要求1所述的基于redis存储作为消息中间件的数据传输方法,其特征在于,所述消费者接收所述消息数据按系统配置,一批批发送。


5.根据权利要求1所述的基于redis存储作为消息中间件的数据传输方法,其特征在于,所述redis的消息应用对外提供的方法为:
11、booleanaddTopic(Stringtopic);添加消息主题;
12、booleanaddGroup(Stringgroup);添加消费组;
13、List<Object>getGroupTopicInfo(Stringgroup,Stringtopic);为指定消费组获取特定的消息主题...

【专利技术属性】
技术研发人员:吴松福谢奉见
申请(专利权)人:厦门投融汇网络有限公司
类型:发明
国别省市:福建;35

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

1