springboot 整合 RocketMQ 可用于物联网,电商高并发场景下削峰,保证系统的高可用

本文根据阿里云 RocketMQ产品文档整理,地址:https://help.aliyun.com/document_detail/29532.html?userCode=qtldtin2

RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。下面我们来搭建RocketMQ

先去官网下载RocketMQ:

下载 | RocketMQ

 选择最新版本下载,下载后解压:

设置环境变量:

然后启动服务端:

已经正常启动。

接着启动broker

已经正常启动!

application.yaml文件配置mq生产者和消费者:

server:port: 8083spring:application:name: springboot-rocketmqrocketmq:# nameserver地址consumer:group: ${spring.application.name}-consumer-group# 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值pull-batch-size: 10name-server: 192.168.1.104:9876producer:#指定发送者组名 group: ${spring.application.name}send-message-timeout: 300000compress-message-body-threshold: 4096max-message-size: 4194304retry-times-when-send-async-failed: 0retry-next-server: trueretry-times-when-send-failed: 2 

pom文件添加依赖:

 

<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version>
</dependency>

接着我们进行生产消息:

@RestController
@RequestMapping("/test")
public class TestController {@Autowiredprivate MessageSender messageSender;@Autowiredprivate RocketMQTemplate rocketMQTemplate;@GetMapping("/syncSendBatch/{nums}")public String syncSendBatch(@PathVariable("nums") Integer nums) {messageSender.syncSend(nums);return "发送成功";}}

 写上消息发送处理,这里通过接受的数量,进行延迟发送接收到的次数个消息:

@Component
public class MessageSender {@Autowiredprivate RocketMQTemplate rocketMQTemplate; // 延时消息public void syncSend(Integer nums){/*** 发送可靠同步消息 ,可以拿到SendResult 返回数据* 同步发送是指消息发送出去后,会在收到mq发出响应之后才会发送下一个数据包的通讯方式。* 这种方式应用场景非常广泛,例如重要的右键通知、报名短信通知、营销短信等。** 参数1: topic:tag* 参数2:  消息体 可以为一个对象* 参数3: 超时时间 毫秒*/for (int i = 0; i < nums; i++) {SendResult result= rocketMQTemplate.syncSend("test-send","测试同步消息:"+i,3000);
//            System.out.println(result.getMessageQueue());System.out.println(result);}}}

接下来使用监听来消费消息:

@Component
@RocketMQMessageListener(topic = "test-send", consumerGroup = "${spring.application.name}-consumer-group",messageModel = MessageModel.CLUSTERING, consumeMode = ConsumeMode.CONCURRENTLY)
public class MessageConsumer implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {System.out.println("-------接收到rocketmq消息:" + message);}
}

接着我通过接口请求来生产消息:

 

 

测试1000000万的消息很快,实际中需要处理复杂的业务,会有事务处理,这个时候我们需要进行分布式部署,削峰,保证系统的高可靠性。

我们可以通过控制台来观察消息的收发情况:

去官网下载:

https://github.com/apache/rocketmq-externals/tree/develop/dev

下载后修改服务器地址即可:

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

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

相关文章

内部培训平台的系统 PlayEdu搭建私有化内部培训平台

PlayEdu是由白书科技团队多年经营的线上教育系统&#xff0c;专为企业提供的全新企业培训方案 我们的目标是为更多的企业机构搭建私有化内部培训平台&#xff0c;以满足不断增长的培训需求 通过PlayEdu&#xff0c;企业可以有效地组织和管理培训资源&#xff0c;提供高质量的…

PriorityQueue类

PriorityQueue类 Java中的PriorityQueue是一个基于优先级堆的无界优先级队列。它是一个队列&#xff0c;可以按照元素的优先级顺序对元素进行排序&#xff0c;并且允许快速访问具有最高优先级的元素。它实现了Queue接口&#xff0c;继承了AbstractQueue类。 主要函数和方法&a…

AIGC: 关于ChatGPT中基于API实现一个客户端Client

Java版的GPT的Client 可作为其他编程语言的参考注意: 下面包名中的 xxx 可以换成自己的 1 &#xff09;核心代码结构设计 src main java com.xxx.gpt.client entity ChatCompletion.javaChatCompletionResponse.javaChatChoice.java… util Proxys.java… ChatApi.javaChatG…

C++的lambda语法

仿函数的最大缺点是&#xff1a; 如果命名不合规范并且没有给出注释&#xff0c;直接阅读难以理解&#xff08;排序的调用过程中&#xff0c;不查看仿函数细节&#xff0c;则很难直接得知是升序排序还是降序排序&#xff09;每次实现仿函数都需自己构建一个类 因此C从其他语言…

分类详情 API 返回值说明

为了进行此平台API的调用&#xff0c;首先我们需要做下面几件事情。 1、 获取一个KEY&#xff0c;点击获取测试key和secret 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口&#xff0c;响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心…

[前 5 名] 最顶级的数据恢复软件解决方案列表

您是否在互联网上找到适用于 Windows PC 的前 5 名最受好评的数据恢复软件解决方案&#xff1f;嗯&#xff0c;在线市场上有很多工具可以恢复已删除的文件。但并不是所有的应用程序都值得使用它。值得信赖的文件恢复工具将有助于快速检索丢失、删除、格式化的数据并从计算机恢复…

JVM之基本概念(一)

(1) 基本概念&#xff1a; JVM 是可运行 Java 代码的假想计算机 &#xff0c;包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收&#xff0c;堆 和 一个存储方法域。JVM 是运行在操作系统之上的&#xff0c;它与硬件没有直接的交互。 (2) 运行过程&#xff1a; 我们都…

[传智杯 #4 决赛] 小智的疑惑

题目描述 传智专修学院给了小智一个仅包含小写字母的字符串 s&#xff0c;他想知道&#xff0c;里面出现了多少次子串 chuanzhi 呢。 我们称一个字符串 t 是 s 的子串&#xff0c;当且仅当将 s 的开头若干个&#xff08;可以为 0 个&#xff09;连续字符和结尾若干个&#xf…

讲一下mysql的锁

MySQL 中的锁机制是数据库管理系统用于控制并发访问的重要组成部分。锁是一种资源访问的机制&#xff0c;通过它可以确保在同一时间只有一个事务能够对资源进行操作&#xff0c;从而维护数据的一致性和完整性。在 MySQL 中&#xff0c;锁主要分为共享锁&#xff08;Shared Lock…

听GPT 讲Rust源代码--src/tools(7)

File: rust/src/tools/rust-analyzer/crates/ide/src/inlay_hints/chaining.rs 在Rust源代码中&#xff0c;rust-analyzer/crates/ide/src/inlay_hints/chaining.rs这个文件的作用是生成Rust代码中的链式调用提示。 具体来说&#xff0c;当我们使用链式调用时&#xff0c;例如A…

Python练习题(三)

&#x1f4d1;前言 本文主要是【Python】——Python练习题的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&am…

51单片机PWM讲解

前言 51单片机我已经很久没用过了&#xff0c;毕竟是十年前的产物了&#xff0c;但是由于工作室的学弟学妹需要学习&#xff0c;加之马上就要举行循迹小车比赛&#xff0c;很多人反映看不懂PWM&#xff0c;或者看了不会用&#xff0c;于是写一篇文章简单介绍一下。 PWM普遍应…

Kubernetes学习笔记-Part.08 安装k8s环境

目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第八章 K8s环境安装 8.1.准备安装文件 在外网服务器…

IDEA如何配置Git 遇到问题的解决

新建项目 点击 会变红 会生成.git隐藏文件 配置远程仓库路径&#xff1a;点击Manage Remotes&#xff1a;将远程仓库的链接放到这里&#xff1a; 得到如下样式&#xff1a; 此时提交到本地仓库 点击add&#xff0c;添加到暂存文件&#xff1a; 此时文件变绿&#xf…

【Ratis】Grpc.proto文件里定义的一些RPC

一、 总览 Raft的提供了三种类型的RPC。分别如下&#xff1a; RaftClientProtocolService&#xff1a;client与server之间的交互RPC&#xff0c;分为ordered和unordered&#xff0c;一种是有序的异步请求流、一种是无序的异步请求流。RaftServerProtocolService&#xff1a;r…

JDK中lock锁的机制,其底层是一种无锁的架构实现的,公平锁和非公平锁

简述JDK中lock锁的机制&#xff0c;其底层是一种无锁的架构实现的&#xff0c;是否知道其是如何实现的 synchronized与lock lock是一个接口&#xff0c;而synchronized是在JVM层面实现的。synchronized释放锁有两种方式&#xff1a; 获取锁的线程执行完同步代码&#xff0c;…

Elasticsearch一些函数查询

1. 根据价格分组统计数量&#xff0c;每组区间为2000&#xff0c; filter_pathaggregations 设置查询结果只展示函数结果 也有date_histogram函数根据日期分组等等 GET order/_search?filter_pathaggregations {"aggs": {"hist_price": {"histogr…

神经网络 代价函数

神经网络 代价函数 首先引入一些便于稍后讨论的新标记方法&#xff1a; 假设神经网络的训练样本有 m m m个&#xff0c;每个包含一组输入 x x x和一组输出信号 y y y&#xff0c; L L L表示神经网络层数&#xff0c; S I S_I SI​表示每层的neuron个数( S l S_l Sl​表示输出…

使用idea如何快速的搭建ssm的开发环境

文章目录 唠嗑部分言归正传1、打开idea&#xff0c;点击新建项目2、填写信息3、找到pom.xml先添加springboot父依赖4、添加其他依赖5、编写启动类、配置文件6、连接创建数据库、创建案例表7、安装MybatisX插件8、逆向工程9、编写controller10、启动项目、测试 结语 唠嗑部分 小…

MIT线性代数笔记-第21讲-特征值,特征向量

目录 21.特征值&#xff0c;特征向量打赏 21.特征值&#xff0c;特征向量 对于一个方阵 A A A&#xff0c;若 A x ⃗ λ x ⃗ A \vec{x} \lambda \vec{x} Ax λx &#xff0c;即 A x ⃗ A \vec{x} Ax 平行于 x ⃗ \vec{x} x &#xff0c;那么 λ \lambda λ是 A A A的特征值…