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

news2024/11/28 18:41:37

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

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

先去官网下载RocketMQ:

下载 | RocketMQ

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

设置环境变量:

然后启动服务端:

已经正常启动。

接着启动broker

已经正常启动!

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

server:
  port: 8083

spring:
  application:
    name: springboot-rocketmq

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

    @Autowired
    private MessageSender messageSender;

    @Autowired
    private RocketMQTemplate rocketMQTemplate;


    @GetMapping("/syncSendBatch/{nums}")
    public String syncSendBatch(@PathVariable("nums") Integer nums) {
        messageSender.syncSend(nums);
        return "发送成功";
    }

 

}

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

@Component
public class MessageSender {

    @Autowired
    private 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> {

    @Override
    public void onMessage(String message) {
        System.out.println("-------接收到rocketmq消息:" + message);
    }
}

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

 

 

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

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

去官网下载:

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

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

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

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

相关文章

软件测试,缺少项目实战怎么办?

解决办法 你可以进行一个简单的web测试。 以我目前的认知和经验&#xff0c;悄悄告诉你&#xff1a;政府网站大概率会有bug。 在著此文时&#xff0c;我随便找了个地方政府网站&#xff0c;点了进去。 http://www.yibin.gov.cn/en/ybsq/201905/t20190513_976652.html 大家…

(04730)电路分析基础之电路概述

https://www.yuque.com/huangzhanqi/nrt1l4/ffxapo8ql8l2ouux&#xff08;完整笔记&#xff09; 电路有实际电路与电路模型之分&#xff0c;前者是实际存在的电路&#xff0c;后者是把实际电路在一定条件下理想化而得到。 电路 电路就是电流通过的闭合路径&#xff0c;它是由…

2023年拼多多双11研究报告:销售额环比增长12%

随着2023年双11正式落下帷幕&#xff0c;拼多多电商也为今年双11购物狂欢节交上了一份答卷&#xff1a;实现278.6亿元交易额&#xff0c;环比一个月前增长12%。 面对这个销售增量的市场&#xff0c;有哪些类目和品牌脱颖而出&#xff0c;又呈现出怎样的发展趋势呢&#xff1f;…

【网络安全技术】消息认证技术

一、哈希函数 1.安全性质 1&#xff09;抗第一原像攻击&#xff08;Preimage Resistance&#xff09; 给定哈希后的值&#xff0c;很难找到哈希前的原消息。这很好理解&#xff0c;需要哈希函数具有单向性。 一个简单的例子就是密码存储系统&#xff0c;用户登录服务器需要…

一、技术体系结构

本章概要 总体技术体系框架概念和理解 1.1 总体技术体系 单一架构一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one。 单一架构&#xff0c;项目主要应用技术框架为&#xff1a;Spring , SpringMVC , Mybatis 分布…

CoreDNS实战(三)-CoreDNS+ETCD实现DNS负载均衡

1 概述 DNS负载均衡简单来说就是通过一个域名绑定多个IP地址&#xff0c;当客户端访问域名时&#xff0c;DNS服务器将轮询返回其中一个IP&#xff0c;实现客户端分流的作用。 在K8s环境中CoreDNS作为容器服务的DNS服务器&#xff0c;那么就可以通过CoreDNS来实现DNS负载均衡&a…

语音AI大模型公司AssemblyAI完成5000万美元C轮融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于美国加州旧金山的语音AI大模型公司AssemblyAI今日宣布已完成5000万美元C轮融资。 本轮融资完成后&#xff0c;AssemblyAI的融资总额已经达到了1.15亿美元&#xff0c;本轮融资由Accel领投…

【优选算法】1089.复写零

链接&#x1f517;&#xff1a;1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 一&#xff0c;题目解析 要点均用红框圈起来了&#xff0c;特别注意 不要超过数组长度&#xff01;&#xff01;&#xff01; 二&#xff0c;算法原理 通过双指针算法来实现 主要步骤如…

双系统安装过程及其问题解决方案

安装前提示&#xff1a; Windows 上安装 kylin 时&#xff0c;应保证 BIOS 的引导模式时一样的&#xff0c;要么都是 legacy&#xff0c;要么 都是 uefi 引导。否则会导致 windows 无法引导。 安装步骤 1、 在 windows 上右键我的电脑选择管理&#xff0c;在弹出的界面中双击…

分享126个图片JS特效,总有一款适合您

分享126个图片JS特效&#xff0c;总有一款适合您 126个图片JS特效下载链接&#xff1a;https://pan.baidu.com/s/1sOKHo4RciQXwQX9vhLIm3g?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整…

四通道轨-轨运算芯片 D8054,外围应用简便,低功耗2.3mA (典型值)运放供电电流

D8054是一款四通道轨-轨运算放大器&#xff0c;外围应用简便&#xff0c;价格低廉。封装形式为SOP14&#xff0c;TSSOP14&#xff0c; SOP16&#xff0c; TSSOP16。 主要特点&#xff1a; ● 轨-轨输出&#xff0c;输出失调2mV (典型值) ● 高速250MHz&#xff0c;-3dB带…

电机参数解析

1.产品彩页 附录A是一份来自国内电机供应商&#xff0c;沪源电机的彩页。其中注意几个知识 1.1额定功率是机械输出功率。 实际解算一下&#xff1a;电机输出功率 P sqrt(3)*U*I*功率因数*效率 对于0.75KW电机&#xff1a; P 0.75 1.732*380*1.72*0.82*0.807 749.11297324…

AcWing1015摘花生问题dpJava版

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int N 110;static int[][] dp new int[N][N]; ;//存放的是dp[1][1]~dp[R][C]的最大花生数量//dp[i][j] 由max(dp[i - 1][j],dp[i][j - 1])更新而来…

vue+ts实现离线高德地图 内网离线高德地图

1、下载瓦片 我是用最简单的软件下载——MapDownloader 链接&#xff1a;https://pan.baidu.com/s/1Hz__HcA5QhtGmjLNezC_pQ 提取码&#xff1a;6lek 来源&#xff1a;https://blog.csdn.net/fuhanghang/article/details/131330034 2、部署私有化瓦片资源 这里也是用最简单的…

滚动翻页效果

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document&…

docker 手工redis7.x cluster

IP端口192.168.0.816379/6380192.168.0.826379/6380192.168.0.1146379/6380 mdkir /data/{6379,6380}cat <<END> /data/6379.conf # 端口号 port 6379# 设置客户端连接后进行任何其他指定前需要使用的密码 #requirepass 123456 ## 当master服务设置了密码保护时(用re…

如何设计自动化测试脚本

企业中如何设计自动化测试脚本呢&#xff1f;今天我们就来为大家分享一些干货。 一、线性设计 线性脚本设计方式是以脚本的方式体现测试用例&#xff0c;是一种非结构化的编码方式&#xff0c;多数采用录制回放的方式&#xff0c;测试工程师通过录制回访的访问对被测系统进行…

Game-On论文阅读

异质性是多模态研究中最重要的关注点 文章目录 Abstract1. Introduction2. Related Work2.1 多模态假新闻检测 **以往的研究方法**2.2 GNNs在多模态研究中的地位3. 方法论3.1 视觉和文本特征编码器3.2 共享多模态空间和多模态图构建3.3 图注意层3.4 假新闻检测器4. 实验与结果4…

12.5作业

1. #include <iostream>using namespace std;class Animal { private:string name; public:Animal(){}Animal(string name):name(name){cout << "animal" << endl;}virtual void perfrom(){cout << "实现不同表演行为" << …