Spring Cloud Stream 整合 RabbitMQ

目录

Spring Cloud Stream

原理图

工作原理

MQ

MQ原理图

RabbitMQ概述

常见消息模型

Spring AMQP

Docker方式下载、运行RabbitMQ

Demo练习

导入依赖

生产者

消费者

效果


Spring Cloud Stream

原理图

 

工作原理

 

MQ

MQ原理图

RabbitMQ概述

常见消息模型

Spring AMQP

 

Docker方式下载、运行RabbitMQ

# 拉取镜像
docker pull rabbitmq:3-management

# 查看本地镜像
docker images

# 运行rabbitmq
docker run \
-e RABBITME_DEFAULT_USER=itcast \      #账号
-e RABBITMQ_DEFAULT_PASS=123321 \      #密码
--name rabbitmq \                      #容器名
--hostname mq1 \                       #主机名
-p 15672:15672 \                       #ui服务端口
-p 5672:5672 \                         #信息交互端口
-d \                                   #后台方式运行
rabbitmq:3-management                  #镜像名

================= 运行后访问UI界面 =================

================= 首页信息介绍 =================

 

Demo练习

导入依赖

生产者

application.yml配置文件

  # rabbitmq连接信息
  rabbitmq:
    host: 192.168.241.121 # 主机名
    port: 5672 # 端口
    virtual-host: / # 虚拟主机
    username: guest  # 用户名
    password: guest  # 密码

自定义消息生产者绑点

/**
 * @Description:  自定义消息生产信道或生产者消息绑点
 * @Date: 2022/5/15 19:10
 */
public interface OutputMessageBinding {
    
    String OUTPUT = "message-center";


    /**
     * 返回消息信道
     */
    @Output(OUTPUT)
    MessageChannel output();

}

 将通道和交换机建立连接,并向交换机发送消息

@Service
@EnableBinding(OutputMessageBinding.class) //使自定义通道和交换机建立连接
public class PremisesInfoServiceImple implements PremiseInfoService {

    @Resource
    private OutputMessageBinding outputMessageBinding;

    @Override
    public List<PremisesInfoEntity> queryList(Map<String, Object> map) {

        OperationLog log = new OperationLog().setId(1L).setMethodName("测试数据");
        //调用output方法获得消息信道,调用send向交换机发送消息
        outputMessageBinding.output().send(MessageBuilder.withPayload(log).build());
    }
}

消费者

配置文件同上

编写InputMessageBinding.java自定义消费者绑点

/**
 * @Description:  自定义消费者信道或消息绑点
 * @Date: 2022/5/15 19:10
 */
public interface InputMessageBinding {

    String INPUT = "message-center";
    
    /**
     * 返回订阅信道
     */
    @Input(INPUT)
    SubscribableChannel input();

}

编写MqReceiver.java 消费消息 

@Slf4j
@EnableBinding(InputMessageBinding.class) //将自定义绑点和交换机建立连接
public class MqReceiver {

    @StreamListener(InputMessageBinding.INPUT)
    public void handle(String value){
        log.info("[消息] 接收到发送消息MQ: {}", value);
        OperationLog log = JSON.parseObject(value, OperationLog.class);
        System.out.println(log);
    }
}

效果

==========================交换机注册情况==========================

==========================消息消费情况==========================

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【2021年,将Spring全家桶系列课程进行Review,修复顺序等错误。进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并新增高级的Spring Security等内容,通过手把手一步步教你从零开始学会应用Spring,课件将逐步进行上传,敬请期待】 本课程是Spring案例精讲课程的第四部分Spring CloudSpring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Spring Cloud的核心知识点:注册中心、服务提供者与消费者、服务的调用OpenFeign、Hystrix监控、服务网关gateway、消息驱动的微服务Spring Cloud Stream、分布式集群、分布式配置中心的案例介绍, 快速掌握Spring Cloud的核心知识,快速上手,为学习及工作做好充足的准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVC、Spring Boot、Spring CloudSpring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力  【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验  【本课程适用人群】如果你是一定不要错过!  适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

To Do.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值