没有合适的资源?快使用搜索试试~ 我知道了~
SpringCloud应用篇之SpringCloudStream(消息驱动)
0 下载量 50 浏览量
2021-01-27
12:49:47
上传
评论
收藏 409KB PDF 举报
温馨提示
试读
5页
SpringCloudStream为一些供应商的消息中间件产品提供了个性化的自动化配置实现,并引入了发布-订阅、消费组、分区这三个核心概念。通过使用SpringCloudStream,可以有效简化开发人员对消息中间件的使用复杂度,让系统开发人员可以有更多的精力关注于核心业务逻辑的处理。但是目前SpringCloudStream只支持RabbitMQ和Kafka的自动化配置。 首先,我们通过一个简单的示例对SpringCloudStream有一个初步的认识。我们中间件使用RabbitMQ,创建spring-cloud-stream模块编辑pom.
资源详情
资源评论
资源推荐
SpringCloud应用篇之应用篇之SpringCloudStream(消息驱动)(消息驱动)
(一)简介
Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现,并引入了发布-订阅、消费组、分区这
三个核心概念。通过使用 Spring Cloud Stream,可以有效简化开发人员对消息中间件的使用复杂度,让系统开发人员可以有
更多的精力关注于核心业务逻辑的处理。但是目前 Spring Cloud Stream 只支持 RabbitMQ 和 Kafka 的自动化配置。
(二)快速搭建
首先,我们通过一个简单的示例对 Spring Cloud Stream 有一个初步的认识。我们中间件使用 RabbitMQ,创建 spring-cloud-
stream 模块
2.1 引入依赖
编辑 pom.xml 文件,引入 Spring Cloud Stream 对 RabbitMQ 支持的?spring-cloud-starter-stream-rabbit 依赖,该依赖包是
Spring Cloud Stream 对 RabbitMQ 支持的封装,其中包含了对 RabbitMQ 的自动化配置等内容。
配置文件
配置 RabbitMQ 的相关信息
这里通过 spring.cloud.stream.bindings.*.destination 的配置,让输入通道和输出通道对应到同一个主题上。
创建消息通道绑定的接口
创建 StreamClient 接口,通过 @Input和 @Output注解定义输入通道和输出通道,另外,@Input 和 @Output 注解都还有一
个 value 属性,该属性可以用来设置消息通道的名称,这里指定的消息通道名称分别是 myInput 和 myOutput。如果直接使用
两个注解而没有指定具体的 value 值,则会默认使用方法名作为消息通道的名称。
当定义输出通道的时候,需要返回 MessageChannel 接口对象,该接口定义了向消息通道发送消息的方法;定义输入通道
时,需要返回 SubscribableChannel 接口对象,该接口集成自 MessageChannel 接口,它定义了维护消息通道订阅者的方
法。
在完成了消息通道绑定的定义后,这些用于定义绑定消息通道的接口则可以被 @EnableBinding 注解的 value 参数指定,从而
在应用启动的时候实现对定义消息通道的绑定,Spring Cloud Stream 会为其创建具体的实例,而开发者只需要通过注入的方
式来获取这些实例并直接使用即可。下面就来创建用于接收来自 RabbitMQ 消息的消费者 StreamReceiver
创建消费者
创建用于接收来自 RabbitMQ 消息的消费者 StreamReceiver 类
@EnableBinding 注解用来指定一个或多个定义了 @Input 或 @Output 注解的接口,以此实现对消息通道(Channel)的绑
定。上面我们通过@EnableBinding(value = {StreamClient.class}) 绑定了 StreamClient 接口,该接口是我们自己实现的对输
入输出消息通道绑定的定义
@StreamListener,主要定义在方法上,作用是将被修饰的方法注册为消息中间件上数据流的事件监听器,注解中的属性值对
应了监听的消息通道名。上面我们将receive 方法注册为 myInput 消息通道的监听处理器,当我们往这个消息通道发送信息的
时候,receiver 方法会执行。
启动类
创建启动类,在启动类添加一个接口,使用上面定义的消息通道绑定接口 StreamClient 向被监听的消息通道发送消息,具体
如下:
验证
启动 StreamApplication,访问 http://localhost:9898/send 接口发送消息,通过控制台,可以看到,消息已成功被接收
我们看一下 RabbitMQ 的界面
weixin_38741030
- 粉丝: 3
- 资源: 924
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0