当前位置: 首页 > news >正文

SpringCloud-消息组件

1 简介

了解过RabbitMQ后,可能我们会遇到不同的系统在用不同的队列。比如系统A用的Kafka,系统B用的RabbitMQ,但是没了解过Kafka,因此可以使用Spring Stream,它能够屏蔽地产,像JDBC一样,只关心SQL和业务本身,不关心数据库的具体实现。

在这里插入图片描述
创建一个新的项目测试
在这里插入图片描述
导入SpringCloud依赖

    <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

在这里插入图片描述
新建两个模块,一个生产者一个消费者
在这里插入图片描述
在这里插入图片描述
给两个模块导入依赖

<dependencies><!--  RabbitMQ的Stream实现  --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

在这里插入图片描述
在这里插入图片描述

1.1 编写生产者

首先是配置文件
在这里插入图片描述

server:port: 8001
spring:cloud:stream:binders:   #此处配置要绑定的rabbitmq的服务信息local-server: #绑定名称,随便起一个就行type: rabbit #消息组件类型,这里使用的是RabbitMQ,就填写rabbitenvironment:  #服务器相关信息,按照下面的方式填写就行,爆红别管spring:rabbitmq:host: 8.130.172.119port: 5672username: adminpassword: passwordvirtual-host: /bindings:test-out-0:destination: test.exchange

在这里插入图片描述
在这里插入图片描述
然后编写controller,访问一次接口,就向消息队列发送一个数据:

@RestController
public class PublishController {@ResourceStreamBridge bridge;  //通过bridge来发送消息@RequestMapping("/publish")public String publish(){//第一个参数其实就是RabbitMQ的交换机名称(数据会发送给这个交换机,到达哪个消息队列,不由我们决定)//这个交换机的命名稍微有一些规则://输入:    <名称> + -in- + <index>//输出:    <名称> + -out- + <index>//这里我们使用输出的方式,来将数据发送到消息队列,注意这里的名称会和之后的消费者Bean名称进行对应bridge.send("test-out-0", "HelloWorld!");return "消息发送成功!"+new Date();}
}

在这里插入图片描述
在这里插入图片描述
这里生产者就完成了

1.2 消费者

编写配置文件

因为消费者是输入,默认名称为 方法名-in-index,这里我们将其指定为我们刚刚定义的交换机

在这里插入图片描述

消费者启动类
在这里插入图片描述
直接定义一个consumer类型的bean即可

@Component
public class ConsumerComponent {@Bean("test")   //注意这里需要填写我们前面交换机名称中"名称",这样生产者发送的数据才会正确到达public Consumer<String> consumer(){return System.out::println;}
}

在这里插入图片描述
此时消费者就编写完成

1.3 启动测试

启动两个服务
在这里插入图片描述
在这里插入图片描述

访问controller
在这里插入图片描述
消费者接收到消息
在这里插入图片描述
这样就通过SpringCloud Stream屏蔽掉底层RabbitMQ来直接进行消息的操作了

http://www.lryc.cn/news/183419.html

相关文章:

  • oringin的x轴(按x轴规定值)绘制不规律的横坐标
  • ubuntu安装MySQL
  • 背包问题学习笔记-多重背包问题
  • Net相关的各类开源项目
  • 阿里云服务器修改IP地址的两种方法
  • SpringMVC的数据绑定
  • 1.1.OpenCV技能树--第一单元--OpenCV简介
  • transformer不同的包加载模型的结构不一样
  • 【MyBatis-Plus】快速精通Mybatis-plus框架—核心功能
  • C语言:选择+编程(每日一练Day9)
  • 蓝桥等考Python组别十三级003
  • 2023年CSP-J真题详解+分析数据(选择题篇)
  • 基于三平面映射的地形纹理化【Triplanar Mapping】
  • 初步了解nodejs语法和web模块
  • 51单片机+EC11编码器实现可调参菜单+OLED屏幕显示
  • 数据结构刷题训练——二叉树篇(一)
  • 2023版 STM32实战5 基本定时器中断
  • css3实现页面元素抖动效果
  • [架构之路-232]:操作系统 - 文件系统存储方法汇总
  • 简述 AOP 动态代理
  • 机器学习基础之《分类算法(8)—随机森林》
  • Python数据攻略-Pandas进行CSV和Excel文件读写
  • lv7 嵌入式开发-网络编程开发 13 UNIX域套接字
  • blender光照系统设置
  • 华为云云耀云服务器L实例评测|基于canal缓存自动更新流程 SpringBoot项目应用案例和源码
  • vue3 中使用echarts图表——柱状图
  • 基于Java的家政公司服务平台设计与实现(源码+lw+部署文档+讲解等)
  • 深入了解 PostgreSQL:功能、特性和部署
  • 平台项目列表页实现(二)
  • osg实现鼠标框选