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.mzph.cn/news/96607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 给某个方法设定执行超时时间

C# 给某个方法设定执行超时时间在某些情况下(例如通过网络访问数据)&#xff0c;常常不希望程序卡住而占用太多时间以至于造成界面假死。 在这时、我们可以通过Thread、Thread Invoke&#xff08;UI&#xff09;或者是 delegate.BeginInvoke 来避免界面假死&#xff0c; 但是…

java ftputils 模拟测试方法 有效

前言: 最近需要开发相关ftp内进行文件的上传与下载的操作,需要使用java来实现,需要开发一个工具类进行处理; 具体代码如下: import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.slf4j.Logger; import org.slf4j.LoggerF…

el-table进阶(每条数据分行或合并)

最麻烦的还是css样式&#xff0c;表格样式自己调吧 <!-- ——————————————————————————————————根据数据拓展表格—————————————————————————————————— --> <div style"display: flex"&…

Java Spring Boot 目录结构介绍

Java Spring Boot 是一个用于简化Java应用程序开发的框架&#xff0c;它提供了一套灵活、易用的开发工具和约定&#xff0c;帮助开发者更快速地构建各种类型的Java应用程序。Spring Boot 的目录结构是一个重要的组成部分&#xff0c;它规定了如何组织和管理项目代码和资源文件。…

cpp primer笔记-010开始

下面的第5行代码可以写成第6行注释的代码#include<iostream> int main() {int v1{}, v2{};(std::cin >> v1) >> v2;//std::cin>>v1>>v2;(std::cout << v1) << " " << v2 << std::endl;return 0; }char类型在有…

oralce配置访问白名单的方法

目录 配置sqlnet.ora文件 重新加载使配置生效 注意事项 Oracle数据库安全性提升&#xff1a;IP白名单的配置方法 随着互联网的发展&#xff0c;数据库安全问题也越来越严重。Oracle是目前使用较为广泛的一款数据库管理系统&#xff0c;而IP白名单作为提升数据库安全性的有效…

深度学习——权重衰减(weight_decay)

深度学习——权重衰减&#xff08;weight_decay) 文章目录 前言一、权重衰减1.1. 范数与权重衰减1.2. 高维线性回归1.3. 从零开始实现1.3.1.初始化模型参数1.3.2. 定义L₂范数惩罚1.3.3. 定义训练代码实现1.3.4. 不管正则化直接训练1.3.5. 使用权重衰减 1.4. 简洁实现 总结 前言…

vue 项目打包性能分析插件 webpack-bundle-analyzer

webpack-bundle-analyzer 是 webpack 的插件&#xff0c;需要配合 webpack 和 webpack-cli 一起使用。这个插件可以读取输出文件夹&#xff08;通常是 dist&#xff09;中的 stats.json 文件&#xff0c;把该文件可视化展现&#xff0c;生成代码分析报告&#xff0c;可以直观地…

Leetcode901-股票价格跨度

一、前言 本题基于leetcode901股票价格趋势这道题&#xff0c;说一下通过java解决的一些方法。并且解释一下笔者写这道题之前的想法和一些自己遇到的错误。需要注意的是&#xff0c;该题最多调用 next 方法 10^4 次,一般出现该提示说明需要注意时间复杂度。 二、解决思路 ①…

神经网络中的知识蒸馏

多分类交叉熵损失函数&#xff1a;每个样本的标签已经给出&#xff0c;模型给出在三种动物上的预测概率。将全部样本都被正确预测的概率求得为0.70.50.1&#xff0c;也称为似然概率。优化的目标就是希望似然概率最大化。如果样本很多&#xff0c;概率不断连乘&#xff0c;就会造…

Qt编程中采用signal传递自定义数据类型

本文介绍Qt编程中采用signal传递自定义数据类型&#xff08;结构体类型&#xff09;。 Qt编程中可以通过signal传递标准类型&#xff0c;如常见的int,QString,bool类型&#xff0c;有时候需要传递特定的数据类型如结构体&#xff0c;Qt是不支持直接传递的&#xff0c;若将其分…

关于丢失msvcp71.dll的5个解决办法,msvcp71.dll丢失原因分析

计算机已经成为我们生活和工作中不可或缺的一部分&#xff0c;在使用计算机的过程中&#xff0c;我们经常遇到各种软件或应用程序崩溃的情况。其中&#xff0c;一个常见的错误提示是“MSVCP71.dll丢失”。这个错误通常出现在运行使用Visual C Redistributable for Visual Studi…

数据结构——多重链表的实现

//多重列表的实现 #include<stdio.h> #include<stdlib.h> struct lnode {int row,col,value; }; //没有用到down指针 //没有用到tag和next指针 typedef struct node {int tag;//区分头结点(0)和非零元素结点(1)struct node* right;struct node* down;//共用体与结…

Django基础讲解-路由控制器和视图(Django-02)

一 路由控制器 参考链接&#xff1a; Django源码阅读&#xff1a;路由&#xff08;二&#xff09; - 知乎 Route路由, 是一种映射关系&#xff01;路由是把客户端请求的 url路径与视图进行绑定 映射的一种关系。 这个/timer通过路由控制器最终匹配到myapp.views中的视图函数 …

抄写Linux源码(Day14:从 MBR 到 C main 函数 (3:研究 head.s) )

回忆我们需要做的事情&#xff1a; 为了支持 shell 程序的执行&#xff0c;我们需要提供&#xff1a; 1.缺页中断(不理解为什么要这个东西&#xff0c;只是闪客说需要&#xff0c;后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的&#xff0c;所以需要这两个东…

应用第三方ByteTrack实现目标跟踪

在上一篇博文&#xff0c;我们实现了应用官网ByteTrack实现的目标跟踪。但吹毛求疵地说&#xff0c;官网的ByteTrack有一些不足&#xff1a;1、为了通用性及科研的要求&#xff0c;代码过于冗长&#xff0c;但这不利于集成到自己的程序中&#xff1b;2、目标跟踪结果没有目标类…

MDC方式实现简单链路追踪

MDC 方式实现日志链路追踪 拦截器 package com.cdn.log.interceptor;import com.cdn.log.consts.CLogConst; import com.cdn.log.utils.IdUtil; import org.slf4j.MDC; import org.springframework.util.StringUtils; import org.springframework.web.servlet.ModelAndView; im…

山西电力市场日前价格预测【2023-10-08】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-08&#xff09;山西电力市场全天平均日前电价为258.40元/MWh。其中&#xff0c;最高日前电价为496.19元/MWh&#xff0c;预计出现在18:45。最低日前电价为0.00元/MWh&#xff0c;预计出…

PMP考试需要多少钱?费用总计来啦!

PMP项目管理专业人士资格认证是由项目管理协会&#xff08;Project Management Institute&#xff0c;简称PMI&#xff09;发起的。PMP作为世界级的项目管理认证证书&#xff0c;拥有着先进的项目管理知识体系&#xff0c;它严格评估项目管理人员知识技能是否具有高品质的资格认…

【FreeRTOS】内存管理简单介绍

有没有想过什么移植FreeRTOS时&#xff0c;为什么有多种的内存文件&#xff0c;我们工程只使用Heap_4&#xff0c;其他的有什么用&#xff1f;每个的区别是什么&#xff1f;FreeRTOS是一种流行的实时操作系统&#xff0c;广泛应用于嵌入式系统开发中。在嵌入式系统中&#xff0…