【RocketMQ系列九】SpringCloudStream整合RocketMQ

news2024/10/7 6:49:35

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。
❤️ 3. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当 。python爬虫入门进阶
❤️ 4. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 5. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门

文章目录

    • 1. Spring Cloud Stream是什么?
    • 2. Spring Cloud Stream的执行流程
    • 3. 注解代码实现
      • 在 my-springcloud-rocketmq-producer 上的操作
      • 3.1. 引入依赖
      • 3.2 . 属性文件配置
      • 3.3. 定义生产者
      • 在 my-springcloud-rocketmq-consumer上的操作
      • 3.4. 引入依赖同生产者
      • 3.5. 配置文件修改
      • 3.6. 定义消费者

1. Spring Cloud Stream是什么?

Spring Cloud Stream是一个框架,用于构建与共享消息系统连接的高度可扩展的事件驱动微服务。

官网:https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/

官网概述:https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#spring-cloud-stream-preface-notable-deprecations

该框架提供了一个灵活的编程模型,该模型基于已经建立和熟悉的Spring习惯用法和最佳实践,包括对持久pub/sub 语义、消费者组和有状态分区的支持。

简单的理解就是Spring Cloud Stream 通过在上层定义统一消息的编程模型,屏蔽了底层消息中间件的差异,降低了使用成本。下图展示了Spring Cloud Stream的处理架构

带粘合剂的 SCSt

image-20231006092654679

Spring Cloud Stream的核心构建块(编程模型)是:

  1. Destination Binders: 负责提供与外部消息传递系统集成的组件。Binders 可以生成Bindings。
  2. **Bindings: ** 外部消息系统和应用程序之间的桥梁,提供消息的生产者和消费者(由目标绑定器创建)。即用来绑定消息生产者和消息消费者。它有两种类型,INPUT和OUTPUT,INPUT对应消费者,OUTPUT对应生产者。
  3. Message: 生产者和消费者用于与目标绑定器(以及通过外部消息系统与其他应用程序)通信的规范的数据结构。

2. Spring Cloud Stream的执行流程

SpringCloudStream

3. 注解代码实现

首先创建一个生产者项目 my-springcloud-rocketmq-producer 和一个消费者项目 my-springcloud-rocketmq-consumer。

本demo使用的 版本号是 cloud 2021.0.5.0 +springboot 2.6.13

在 my-springcloud-rocketmq-producer 上的操作

3.1. 引入依赖

  <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
        </dependency>

3.2 . 属性文件配置

spring:
  cloud:
    stream:
      bindings:
        output:
          destination: my-springcloud-stream-topic
      rocketmq:
        binder:
          name-server: 172.31.184.89:9876

3.3. 定义生产者

在MySpringcloudRocketmqProducerApplication 添加 @EnableBinding(Source.class) 注解。然后创建生产者。

@Component
public class MyProducer {
	@Resource
	private Source source;
	
	public void sendMessage(String msg) {
		// 封装消息头
		Map<String, Object> headers = new HashMap<>();
		headers.put(MessageConst.PROPERTY_TAGS, "tagA");
		// 创建消息对象
		Message<String> message = MessageBuilder.createMessage(msg, new MessageHeaders(headers));
		// 发送消息
		source.output().send(message);
	}
}

在 my-springcloud-rocketmq-consumer上的操作

3.4. 引入依赖同生产者

3.5. 配置文件修改

spring.cloud.stream.rocketmq.binder.name-server=172.31.184.89:9876
spring.cloud.stream.bindings.input.destination=my-springcloud-stream-topic
spring.cloud.stream.bindings.input.group=my-springcloud-stream-consume-group

3.6. 定义消费者

在MySpringcloudRocketmqConsumerApplication 类上添加 @EnableBinding(Sink.class)注解。

@Component
public class MyConsumer {
   @StreamListener(Sink.INPUT)
   public void processMessage(String message) {
      System.out.println("收到的消息=" + message);
   }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1119886.html

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

相关文章

2023-10-15 LeetCode每日一题(只出现一次的数字)

2023-10-15每日一题 一、题目编号 137. 只出现一次的数字 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并…

MySQL数据库查询实战操作

前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…

Linux磁盘扩容(加硬盘法)

目录 ​编辑 1、虚拟机操作 2、查看当前分区 3、更新并重启虚拟机 4、对新磁盘分区 5、对新分区进行格式化 6、进行文件系统扩展 1、虚拟机操作 点击添加 2、查看当前分区 fdisk -l3、更新并重启虚拟机 shutdown -r now 然后虚拟机会重启 在此查看当前分区 fdisk -l…

Pycharm设置项目的python环境与界面上terminal的shell运行环境

1、首先打开左上角的file–>settings 2、设置项目运行环境如下所示&#xff1a; 3、设置ternimal的shell执行环境如下所示&#xff1a;

【试题000】C语言整型常量求平方根Sqrt函数

题目&#xff1a;设float x9&#xff0c;y2;&#xff0c;表达式(int) (sqrt (x) /y) 的值是&#xff1f; 代码解析&#xff1a;↓ #include <studio.h> #include <math.h> void main() {float x 9, y 2;printf("%d\n", (int)(sqrt(x) / y));//结果1/…

【解锁未来】探索Web3的无限可能性-01

文章目录 前言什么是Web3&#xff1f; 前言 还记得你第一次听说比特币吗&#xff1f;也许那只是一个关于新技术将改变一切的微弱嗡嗡声。也许你会有一种 "FOMO "的感觉&#xff0c;因为那些早早入场的人突然积累了一大笔财富–尽管你并不清楚这些 "钱 "可…

解决windows10、windows11故障:Microsoft-Windows-Kernel-Processor-Power 事件ID:37

一、现象 windows系统日志中出现大量的“Microsoft-Windows-Kernel-Processor-Power”错误。 经过分析&#xff1a;原因是windows配置的【使用电池】默认值是5%&#xff0c;按5%计算出来的功率与CPU的最小功率不兼容&#xff0c;如&#xff1a;本机CPU最高功率是25W&#xff0…

【Linux】文件IO基础知识——下篇, 什么是软硬链接?如何用别人的动静态库??

目录 一&#xff0c;stderr 2. errno全局变量 二&#xff0c;文件系统 1. 软链接 2. 硬链接 三&#xff0c;静态库 1. 制作静态库 2. 自动化生成静态库 & 自动发布库与头文件 3. 如何使用第三方库 法&#xff08;一&#xff09;&#xff1a;修改系统文件库 …

QT学习day5(QT实现TCP协议)

作业&#xff1a;利用TCP客户端和服务器实现网络聊天室&#xff08;简单版QQ&#xff09; 1.服务器代码 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器头文件 #include<QTcpSocket> …

2023-10-21 LeetCode每日一题(统计无向图中无法互相到达点对数)

2023-10-21每日一题 一、题目编号 2316. 统计无向图中无法互相到达点对数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数 n &#xff0c;表示一张 无向图 中有 n 个节点&#xff0c;编号为 0 到 n - 1 。同时给你一个二维整数数组 edges &#xff0c;其中 ed…

Python Pandas数据处理作图——波尔共振实验

import matplotlib.pyplot as plt import pandas as pd from pylab import mplmpl.rcParams["font.sans-serif"] ["SimHei"]data {频率比例w/wr: [1.036, 1.030, 1.025, 1.020, 1.012, 1.007, 1.002,0.997,0.993,0.990,0.986,0.977,0.969],振幅测量值θ&…

每日一练Day11

一、单选 1. 下面哪个标识符是合法的&#xff1f; A 9HelloWorld B _Hello World C Hello*World D Hello$World 答案 D 解析&#xff1a; Java标识符由字母、数字、_&#xff08;下划线&#xff09;、美元符号或人民币符号组成。不能由数字开头。关键字不能作为标识符…

#1024 程序员节 大图像中的小目标检测——基于YOLOV8+OnnxRuntime部署+滑动窗口+Zbar的条码检测研究

文章目录 前言1 训练一个YOLOV8的一维码检测模型2 创建滑动窗口2.1 模块导入与测试图片展示2.2 创建滑动窗口检测&#xff0c;窗口大小为&#xff08;640,640&#xff09;&#xff0c;滑动距离为640。对不足&#xff08;640&#xff0c;640&#xff09;的窗口进行填充 3 创建on…

并发编程-并发三大特性

并发三大特性 并发编程Bug源头&#xff1a;原子性、可见性和有序性问题。 原子性 一个或多个操作&#xff0c;要么全部执行且在执行过程中不被任何因素打断&#xff0c;要么全部不执行。 注意&#xff1a;不采取任何的原子性保障措施的自增操作并不是原子性的&#xff0c;比…

【题解 树形dp 拆位】 树上异或

「KDOI-06-S」树上异或 题目描述 给定一棵包含 n n n 个节点的树&#xff0c;第 i i i 个点有一个点权 x i x_i xi​。 对于树上的 n − 1 n-1 n−1 条边&#xff0c;每条边选择删除或不删除&#xff0c;有 2 n − 1 2^{n-1} 2n−1 种选择是否删除每条边的方案。 对于…

Vue中的响应式原理是如何实现的?

Vue中的响应式原理是通过使用Vue的响应式系统来实现的。这个系统依赖于JavaScript的Object.defineProperty方法&#xff0c;以及ES6的Proxy对象&#xff08;在Vue 3中&#xff09;。 下面是Vue中响应式原理的概述&#xff1a; 1&#xff1a;数据初始化&#xff1a; 在Vue组件…

【面试HOT100】链表树

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于LeetCodeHot100进行的&#xff0c;每个知识点的修正和深入主要参考…

Java面向对象(基础)--方法应用

文章目录 一、方法的重载介绍案例&#xff08;1&#xff09;案例1 练习&#xff08;1&#xff09;练习1&#xff08;2&#xff09;练习2&#xff08;3&#xff09;练习3&#xff08;4&#xff09;练习4 二、可变个数形参的方法介绍举例&#xff08;1&#xff09;举例1&#xff…

计算机组成原理 new07 真值和机器数 无符号整数 定点整数 定点小数 $\color{red}{Δ}$

文章目录 真值和机器数 无符号整数无符号整数的定义无符号整数的特征无符号整数的表示范围无符号整数的加法无符号数的减法 有符号整数(定点整数)有符号整数的定义原码原码的特点反码反码的特点补码补码的特点快速求解n位负数补码的方法为什么补码能够多表示一个范围(重点)变形…

java1.8新特性流

案例描述 今天跟着黑马程序员的视频&#xff0c;完成“瑞吉外卖”项目的菜品信息管理模块的时候&#xff0c;遇到了一个比较陌生的写法 用到了Java8的新特性 stream().map((item) -> {}).collect() List<DishDto> collect records.stream().map((item) -> {DishDt…