基于SpringCloudStream的消息驱动编程模型的扩展方法技术

技术编号:37801801 阅读:9 留言:0更新日期:2023-06-09 09:31
本发明专利技术公开了基于SpringCloudStream的消息驱动编程模型的扩展方法,包括如下步骤:S1、启动Spring项目,初始化消息队列中间件的环境配置;S2、初始化消息队列消费者的配置并调用内置的消息队列消费者处理器以动态创建消息输入通道,将注册至Spring容器中;S3、采用@MQListener注解方法动态创建并缓存消息订阅通道;S4、Spring项目启动完成后,遍历消息订阅通道内的缓存进行消息队列消费者的绑定和启动;S5、初始化消息队列生产者的配置,调用内置的消息队列生产者处理器以动态创建、绑定消息输出通道,并发送消息。本发明专利技术的方法实现了在消息生产和消息消费中动态创建并绑定消息通道的特性,从而支持更加灵活的消息驱动的业务场景。场景。场景。

【技术实现步骤摘要】
基于Spring Cloud Stream的消息驱动编程模型的扩展方法


[0001]本专利技术涉及计算机
,特别涉及基于Spring Cloud Stream的消息驱动编程模型的扩展方法。

技术介绍

[0002]Spring Cloud Stream是一个构建消息驱动微服务的框架,它解决了研发人员无感知的使用各种消息中间件的问题。Spring Cloud Stream依赖配置调整来支持不同类型消息中间件的动态切换和相应消息通道(包括默认消息通道或自定义消息通道)的维护,使得应用可以更多的关注自身的业务实现。
[0003]目前Spring Cloud Stream的编程模型采用的是预先通过配置文件方式绑定消息通道,然后在消息生产和消息监听的消费处理类中通过Spring Bean(框架运行时的管理对象)的注入和注解的方式以实现对应消息通道的显示和声明。该方式存在的问题在于:在消息生产和消息监听的消费中无法动态创建并绑定消息通道,当程序需要根据动态的运行条件(如集团ID)动态切换到对应的MQ消费者和MQ生产者时(MQ,Message Queue,即消息队列),需要采用预先配置消息输入/输出通道的方法,不仅配置项冗长复杂难以维护,而且还需创建大量相同功能的支持类文件,从而造成程序文件数量的大量增加。

技术实现思路

[0004]为解决上述问题,本专利技术提供了基于Spring Cloud Stream的消息驱动编程模型的扩展方法。
[0005]本专利技术采用以下技术方案:
[0006]基于Spring Cloud Stream的消息驱动编程模型的扩展方法,包括如下步骤:
[0007]S1、启动Spring项目,初始化消息队列中间件的环境配置;
[0008]S2、在Spring Bean生命周期的初始化回调方法中,初始化消息队列消费者的配置并调用内置的消息队列消费者处理器以动态创建消息输入通道,将注册至Spring容器中;
[0009]S3、在Spring Bean生命周期的后置处理器初始化回调方法中,采用@MQListener注解方法动态创建并缓存消息订阅通道;
[0010]S4、Spring项目启动完成后,遍历消息订阅通道内的缓存进行消息队列消费者的绑定和启动;
[0011]S5、初始化消息队列生产者的配置,调用内置的消息队列生产者处理器以动态创建、绑定消息输出通道,并发送消息。
[0012]进一步地,所述消息队列中间件的环境配置包括Spring Cloud Stream配置项下的默认绑定者和绑定者列表消息。
[0013]进一步地,所述绑定者列表信息包括消息队列生产者策略配置信息、消息队列消费者策略配置信息和消息队列服务器连接信息。
[0014]进一步地,所述消息队列消费者的配置包括通道主题、异常重试策略、消费分组以
及绑定者。
[0015]进一步地,所述消息订阅通道用于监听所述消息队列消费者的对应通道主题下的消息队列中的消息。
[0016]进一步地,所述Spring Bean生命周期包括在所述Spring项目的启动阶段进行Bean对象的实例化、属性填充和初始化过程。
[0017]进一步地,步骤S4中,只有当消息订阅通道内缓存中的消息队列消费者全部绑定成功后才开始进行逐个启动消息队列消费者,若任意一个消息队列消费者启动失败则停止全部消息队列消费者的启动。
[0018]进一步地,所述消息队列生产者的配置包括通道主题、生产者分组以及绑定者。
[0019]进一步地,所述内置的消息队列消费者处理器用于统一执行消息输入通道的动态创建和消息队列消费监听处理器的Bean逻辑的注册。
[0020]进一步地,内置的消息队列生产者处理器用于统一执行消息输出通道的动态创建、消息队列生产者处理器的Bean逻辑的注册和消息输出通道的绑定。
[0021]采用上述技术方案后,本专利技术与
技术介绍
相比,具有如下优点:
[0022]本专利技术扩展了Spring Cloud Stream的消息驱动编程模型,使其具备在消息生产和消息消费中动态创建并绑定消息通道的特性,从而支持更加灵活的消息驱动的业务场景。
附图说明
[0023]图1为本专利技术的方法流程图。
具体实施方式
[0024]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。
[0025]实施例
[0026]如图1所示,基于Spring Cloud Stream的消息驱动编程模型的扩展方法,包括如下步骤:
[0027]S1、启动Spring项目,初始化消息队列中间件的环境配置;
[0028]所述消息队列中间件的环境配置包括Spring Cloud Stream配置项下的默认绑定者和绑定者列表消息。所述绑定者列表信息包括消息队列生产者策略配置信息、消息队列消费者策略配置信息和消息队列服务器连接信息。
[0029]S2、在Spring Bean生命周期的初始化回调方法中,初始化消息队列消费者的配置并调用内置的消息队列消费者处理器以动态创建消息输入通道,将注册至Spring容器中;
[0030]所述消息队列消费者的配置包括通道主题、异常重试策略、消费分组以及绑定者。所述内置的消息队列消费者处理器用于统一执行消息输入通道的动态创建和消息队列消费监听处理器的Bean逻辑的注册。
[0031]S3、在Spring Bean生命周期的后置处理器初始化回调方法中,采用@MQListener注解方法动态创建并缓存消息订阅通道;
[0032]所述消息订阅通道用于监听所述消息队列消费者的对应通道主题下的消息队列中的消息。所述Spring Bean生命周期包括在所述Spring项目的启动阶段进行Bean对象的实例化、属性填充和初始化过程。
[0033]S4、Spring项目启动完成后,遍历消息订阅通道内的缓存进行消息队列消费者的绑定和启动;
[0034]步骤S4中,只有当消息订阅通道内缓存中的消息队列消费者全部绑定成功后才开始进行逐个启动消息队列消费者,若任意一个消息队列消费者启动失败则停止全部消息队列消费者的启动。
[0035]S5、初始化消息队列生产者的配置,调用内置的消息队列生产者处理器以动态创建、绑定消息输出通道,并发送消息。
[0036]所述消息队列生产者的配置包括通道主题、生产者分组以及绑定者。内置的消息队列生产者处理器用于统一执行消息输出通道的动态创建、消息队列生产者处理器的Bean逻辑的注册和消息输出通道的绑定。
[0037]本实施例扩展了Spring Cloud Stream的消息驱动编程模型,使其具备在消息生产和消息消费中动态创建并绑定消息通道的特性,从而支持更加灵活的消息驱动的业务场景。
[0038]以上所述,仅为本专利技术较佳本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于Spring Cloud Stream的消息驱动编程模型的扩展方法,其特征在于:包括如下步骤:S1、启动Spring项目,初始化消息队列中间件的环境配置;S2、在Spring Bean生命周期的初始化回调方法中,初始化消息队列消费者的配置并调用内置的消息队列消费者处理器以动态创建消息输入通道,将注册至Spring容器中;S3、在Spring Bean生命周期的后置处理器初始化回调方法中,采用@MQListener注解方法动态创建并缓存消息订阅通道;S4、Spring项目启动完成后,遍历消息订阅通道内的缓存进行消息队列消费者的绑定和启动;S5、初始化消息队列生产者的配置,调用内置的消息队列生产者处理器以动态创建、绑定消息输出通道,并发送消息。2.如权利要求1所述的基于Spring Cloud Stream的消息驱动编程模型的扩展方法,其特征在于:所述消息队列中间件的环境配置包括Spring Cloud Stream配置项下的默认绑定者和绑定者列表消息。3.如权利要求2所述的基于Spring Cloud Stream的消息驱动编程模型的扩展方法,其特征在于:所述绑定者列表信息包括消息队列生产者策略配置信息、消息队列消费者策略配置信息和消息队列服务器连接信息。4.如权利要求3所述的基于Spring Cloud Stream的消息驱动编程模型的扩展方法,其特征在于:所述消息队列消费者的配置包括通道主题、异常重试策略、消费分组以及绑定者。5.如权利要求4所述的基于...

【专利技术属性】
技术研发人员:陈碧勇方敏钟金斌
申请(专利权)人:厦门南讯股份有限公司
类型:发明
国别省市:

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

1