Spring Cloud 学习笔记 ——Spring Cloud Stream 概念及 HelloWorld

15.1 概念

Spring Cloud Steam是消息驱动框架,基于 Spring Boot,支持 RabbitMQ、Kafaka,可以做消息的发布、订阅、分区等
Spring Cloud Stream 可以用来构建消息驱动的微服务,微服务之间的调用,比如用 RestTemplate、OpenFeign 都是基于 Http 调用,除了这种方式,也可以使用消息驱动,通过给中间件(如 RabbitMQ)发消息,RabbitMQ 收到消息后,根据 RabbitMQ 的内容消息做响应。
Spring Cloud Stream 比较适合处理耦合度比较低的情况,比如发邮件,发短信这种,不需要立即响应,也不关心是否成功
Spring Cloud Stream 对中间件做了封装,使用起来更加方便,提供了微服务和消息中间件的粘合剂,这种粘合剂叫做 Binder,它负责与消息中间件沟通,而开发者通过 Inputs 和 Outputs 消息通道与 Binder 进行交互。只需关心 Spring Cloud Stream 与微服务之间的通信方式、怎么发送、怎么订阅即可,剩下的交给 Spring Cloud Stream,不用关心其他内容。

15.2 HelloWorld

  • 1.创建一个 Spring Boot 项目的 module ,添加 Spring Web、Spring for RabbitMQ、Cloud Stream 依赖
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 2.启动 docker 中的 RabbitMQ
    在这里插入图片描述

访问 RabbitMQ 管理页面,账号密码都是 guest ,看到如下页面说明 RabbitMQ 启动完成:
在这里插入图片描述

  • 3.在 application.properties 中配置 RabbitMQ 信息
spring.rabbitmq.host=192.168.99.100
spring.rabbitmq.port=32773
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

配置含义简单明了,直接看名字就知道配置的是什么,其中 32771 是 docker 中服务端口(5672)对应外网的端口,如图:
在这里插入图片描述

  • 4.创建消息接收器。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;
@EnableBinding(Sink.class)
public class MsgReceiver {
    private static final Logger logger = LoggerFactory.getLogger(MsgReceiver.class);
    @StreamListener(Sink.INPUT)
    public void receive(Object payload){
        logger.info("received:" + payload);
    }
}

@EnableBinding(Sink.class)是启动粘合剂,把 Sink这个类绑定到 MsgReceiver中,Sink 是默认给的通道配置。
在这里插入图片描述
在 RabbitMQ 中这样显示:
在这里插入图片描述

  • 5.启动项目:
    在这里插入图片描述
    在 RabbitMQ 的管理页面的 Queues中能看见刚刚创建的队列
    在这里插入图片描述
    点击队列名,在 publish message 中输入消息,然后发布
    在这里插入图片描述
    观察控制台,可以看到刚刚队列中发布的那条**大海啊,都是水!**的消息,说明 Spring Cloud Stream 连接 RabbitMQ 使用成功
    在这里插入图片描述

这就是 Spring Cloud Sream 中使用 RabbitMQ 的 HelloWorld 展示

总结

首先默认提供了一个通道,用 Sink 接口封装的,通过 @EnableBinding 和 @StreamListener 两个注解来绑定 Sink 通道 和 监听消息通道的队列中的消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值