RocketMQ单机环境搭建测试+springboot整合

news2024/12/23 14:58:38

1.资源下载

官网:下载 | RocketMQ

这里选择使用编译后可以直接用的 

下载后解压:略

2.更改配置

主要是更改 conf/broker.conf 的配置,记得添加上下面这几行,否则消息发送失败

autoCreateTopicEnable=true # 支持自动创建topic
namesrvAddr=127.0.0.1:9876 # namespace地址
brokerIP1=192.168.0.179 # 这里是broker地址

不添加这几行可能出现以下问题

原文参考:RocketMQ连接报错RemotingConnectException: connect to <172.17.0.1:10:109011>解决_org.apache.rocketmq.remoting.exception.remotingcon_zhangzengxiu的博客-CSDN博客

3.配置环境变量 

需要配置 java,maven,rocketmq的环境变量,可以参照这里配置

# java环境变量配置
export JAVA_HOME=/usr/lib/java-1.8/jdk1.8.0_321
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

# rocketMq环境变量配置
export ROCKETMQ_HOME=/data/rocketMq/rocketmq-all-5.1.0-bin-release
export PATH=${PATH}:${ROCKETMQ_HOME}/bin

MAVEN_HOME=/data/maven/apache-maven-3.8.4
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

配置好之后刷新一下才会生效

source /etc/profile

5.启动Namesrv

一定要先启动namesrv,因为消息服务器是注册到命名服务器上的

nohup mqnamesrv &

6.启动Broker

启动消息服务器,同时指定刚刚修改过的conf文件,不然还是会读取原本默认的阿里外网IP,还是会报错。

nohup sh mqbroker -n localhost:9876 -c ../conf/broker.conf &

7.部署可视化控制台

1.下载文件

通过下面链接进入下载

GitHub - apache/rocketmq-dashboard: The state-of-the-art Dashboard of Apache RoccketMQ provides excellent monitoring capability. Various graphs and statistics of events, performance and system information of clients and application is evidently made available to the user.

 2.构建与运行

先构建,后运行

mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

运行后访问部署那台机器的ip加上端口号即可进入,端口号可以更改配置文件

8.测试消息生产与消费

1.生产消息

在rocketmq的bin目录下运行

tools.shorg.apache.rocketmq.example.quickstart.Producer

会发送1000条测试数据

 2.消费消息

在rocketmq的bin目录下运行

tools.shorg.apache.rocketmq.example.quickstart.Consumer

9.整合springboot

1.引入依赖(注意版本)

<rocketmq-starter.version>2.2.3</rocketmq-starter.version>
<rocketmq-client.version>4.8.0</rocketmq-client.version>

 <!--  rocketmq starter -->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>${rocketmq-starter.version}</version>
        </dependency>
        <!--  rocketmq client  -->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>${rocketmq-client.version}</version>
        </dependency>

2.新增配置

rocketmq:
  name-server: 139.9.178.38:9876
  producer:
    group: springBootGroup                  # 生产者组别
    send-message-timeout: 30000             # 消息发送的超时时间
    retry-times-when-send-async-failed: 2   # 异步消息发送失败重试次数
    max-message-size: 4194304               # 消息的最大长度
  consumer:
    group: MyConsumerGroup

3.生产者

package com.hhmt.delivery.mq.rocket;

import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @author huachun
 * @version 1.0
 * @description: TODO
 * @email huachun_w@163.com
 * @date 2023-04-20 15:10
 */
@Component
public class MyProducer {
    @Resource
    private RocketMQTemplate rocketMQTemplate;
    //发送普通消息的示例
    public void sendMessage(String topic, String msg) {
        this.rocketMQTemplate.convertAndSend(topic, msg);
    
    }
}

4.消费者

package com.hhmt.delivery.mq.rocket;

import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

/**
 * @author huachun
 * @version 1.0
 * @description: TODO
 * MessageModel.BROADCASTING 广播模式,MessageModel.CLUSTERING集群模式
 * @email huachun_w@163.com
 * @date 2023-04-20 15:12
 */
@Component
@RocketMQMessageListener(consumerGroup = "MyConsumerGroup", topic = "TestTopic", messageModel = MessageModel.BROADCASTING)
public class MyConsumer implements RocketMQListener<String> {
    @Override
    public void onMessage(String message) {
        System.out.println("Receivedmessage:" + message);
    }
}

5.测试

编写一个控制器发送消息并接受

package com.hhmt.delivery.mq.rocket;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author huachun
 * @version 1.0
 * @description: TODO
 * @email huachun_w@163.com
 * @date 2023-04-19 18:33
 */
@RestController
@RequestMapping("/v1/mq")
public class MessageController {

    @Autowired
    private MyProducer myProducer;

    @GetMapping("/send/{str}")
    public void send(@PathVariable("str") String str) {
        myProducer.sendMessage("TestTopic",str);
    }

}

测试效果

 

说明:通过控制器调用消息生产服务向 TestTopic 这个主题发送消息 ,同时消费者监听这个主题并接受到消息

@RocketMQMessageListener(consumerGroup = "MyConsumerGroup", topic = "TestTopic", messageModel = MessageModel.BROADCASTING)

messageModel说明:

MessageModel.BROADCASTING 广播模式,所有的消费者都可以收到同样的消息,并且都可以消费
MessageModel.CLUSTERING 集群模式,同一个消费者消费一组消息,不能重复,即A消息被x消费者消费了,其他消费者就不能消费到这个消息了

原文参考:SpringBoot+RocketMq入门_舌尖上的蛋炒饭的博客-CSDN博客

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

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

相关文章

浅谈日出日落的计算方法以及替代工具 - 日出日落 API

引言 如果你想知道精确的日落日出时间&#xff0c;又或者你想设计一个日出日落时间查询的应用&#xff0c;又或者你只是好奇点进来了&#xff0c;还是可以过来围观一下涨涨知识&#xff0c;今天想跟大家聊一聊的是日出日落的计算方法以及替代工具 - 日出日落 API 。 日出日落…

大数据=SQL Boy,SQL Debug打破SQL Boy 的僵局

网上经常盛传 大数据sql boy&#xff0c;后端开发crud boy&#xff0c;算法工程师调参boy 在大数据领域也工作了好几年了&#xff0c;确实大数据开发&#xff0c;很多工作就是写sql&#xff0c;hive sql、spark sql、flink sql等等sql 一、背景&#xff1a; 但是经常有这样一…

NODEJS安装和vue安装及运行方法以及出现Cannot find module ‘node-sass‘ Require stack问题解决方法

安装nodejs 官网下载&#xff1a; https://registry.npmmirror.com/binary.html?pathnode/选择要下载的版本 一般建议下载msi 选择自己的安装位置一直下一步即可完成 检查一下是否安装成功 打开cmd&#xff0c;输入如下指令 node -vnpm -v输出了版本号就说明安装成功了 …

GCM与CCM的动作过程

CCM CCM&#xff08;Counter with CBC-MAC&#xff09;是一种基于对称加密算法的认证加密&#xff08;Authenticated Encryption&#xff09;模式&#xff0c;结合了CBC-MAC&#xff08;Cipher Block Chaining Message Authentication Code&#xff09;用于消息认证和CTR&…

[java聊天室]服务器发送消息给客户端守护线程同步锁(三)

守护线程 守护线程也称为:后台线程 守护线程是通过普通线程调用setDaemon(boolean on)方法设置而来的,因此创建上与普通线程无异.守护线程的结束时机上有一点与普通线程不同,即:进程的结束.进程结束:当一个进程中的所有普通线程都结束时,进程就会结束,此时会杀掉所有正在运行…

嵌入式Linux(2):将Helloworld驱动编译到内核

文章目录 分析一个例子仿写一个例子&#xff08;需要编译成.ko的&#xff09;写三个文件编辑上一级目录的Makefile文件编辑上一级目录的Kconfig文件make menuconfig进行配置 烧录到开发板上 分析一个例子 例子&#xff1a; source "drivers/redled/Kconfig" config…

简单分享微信怎么添加报名链接的步骤

最近看到很多小伙伴都在问有没有简单的报名链接制作办法&#xff0c;因为最近是暑期活动开展的前期&#xff0c;需要用到很多报名链接&#xff0c;希望可以直接通过微信小程序进行报名&#xff0c;扫一扫微信小程序的二维码就可以进入报名页面&#xff0c;然后制作步骤也是简单…

残差 Gabor 卷积网络和 FV-Mix 指数级数据增强策略用于手指静脉识别

论文背景 手指静脉识别系统的性能受到手指静脉训练样本不足的限制&#xff0c;导致特征学习不足和模型泛化能力弱&#xff1a;DCNN 需要大量的数据来学习更抽象的语义信息进行分类。对于指静脉识别&#xff0c;由于每个类别只包含少量样本&#xff0c;极易出现过拟合。原因之一…

MinIO快速入门

一、MinIO概述 官网地址&#xff1a;http://www.minio.org.cn/ 文档地址&#xff1a;http://docs.minio.org.cn/docs/ MinIO是一款基于Apache License v2.0开源协议的分布式文件系统&#xff08;或者叫对象存储服务&#xff09;&#xff0c;可以做为云存储的解决方案用来保存海…

如何借助测控终端实现设备远程运维?

随着物联网技术的发展&#xff0c;数字化越来越重要。数据是新的生产要素&#xff0c;是基础性资源和战略性资源&#xff0c;也是重要生产力。因此许多企业纷纷转型智慧工厂&#xff0c;但老旧的设备无法获取相应的数据&#xff0c;更换老旧设备的成本又太高&#xff0c;就无法…

【计算机架构】如何计算 CPU 时间

目录 0x00 响应时间和吞吐量&#xff08;Response Time and Throughput&#xff09; 0x01 相对性能&#xff08;Relative Performance&#xff09; 0x02 执行时间测量&#xff08;Measuring Execution Time&#xff09; 0x03 CPU 时钟&#xff08;Clocking&#xff09; 0x…

用docker承载mysql

这两天部署系统到生产服务器&#xff0c;前端后端部署docker是毫无疑义的&#xff0c;但mysql呢&#xff1f; 答案是mysql可以部署到docker。 1、数据文件挂载到宿主机 将mysql部署于docker&#xff0c;会有一个担心&#xff0c;就是docker容器的删除非常的容易&#xff0c;…

修改树莓派系统的更新源,软件安装源和pip安装源

本文目录 1、更换系统更新源2、更改软件源3、更换 pip 源4、更新系统与软件5、附加知识 Linux系统常用的安装源主要有系统更新源和软件安装源二大类&#xff0c;系统更新源是用于对Linux系统本身进行升级更新的&#xff0c;软件安装源是用于通过apt命令安装软件的。随着python的…

【Zigbee】解密Zigbee地址分配——你需要知道的一切

&#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&#xff1a;Zeeland&#x1f4da; Github主页: Undertone0809 (Zeeland) (github.com)&…

URL 转为QR code(二维码)

推荐一个良心的网站&#xff0c;能够免费地将url、text编码为二维码&#xff0c;而且还能设计logo、颜色等。 https://www.the-qrcode-generator.com/ 如下图&#xff1a; 可以自己定义logo、颜色&#xff1a; 还能查看扫描历史等统计信息&#xff1a; 上述所有功能都是免…

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例 文章目录 【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例一. RNN简介1.1 概念简介1.2 方法使用简介 二. 编码层embedding2.1 embedding的参数 一. RNN简介 1.1 概念简介 循环神经网络(Recurrent Neural Network)理念…

苹果电容笔值得买吗?ipad电容笔推荐平价

在当今时代&#xff0c;高科技已经成为推动数字产品发展的重要推动力。无论是在工作上&#xff0c;还是在学习上&#xff0c;大屏幕都能起到很好的作用。IPAD将会更好地融入我们的生活&#xff0c;不管是现在还是未来。而ipad配上一支简单的电容笔&#xff0c;不仅可以提高工作…

【机器学习】P22 过拟合和欠拟合的探究2,高偏差与高方差

过拟合与欠拟合的探究2&#xff0c;高偏差与高方差 高偏差和高方差过拟合与欠拟合的解决策略带有L2正则化的神经网络带有早停法的神经网络的完整案例 MINST 高偏差和高方差 高偏差和高方差是机器学习中常见的两个问题&#xff0c;会影响模型的性能。 高偏差&#xff08;High …

MySQL数据库,聚合查询

目录 1、聚合查询 1.1聚合函数 1.1.1count函数 1.1.2sum函数 1.1.3avg函数 1.1.4max函数 1.1.5min函数 1.2group by子句 1.3having 1、聚合查询 1.1聚合函数 聚合函数查询又叫函数查询&#xff0c;它是通过一些特定的函数根据需求来查询相关的信息&#xff0c;常见的…

代码随想录|day52| 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300 最长递增子序列 链接&#xff1a;力扣 看了思路之后写的代码&#xff0c;不知道为什么报错了。 错误一&#xff1a; int nnums.size();vector<int>dp(n,0);dp[0]1;for(int i1;i<n;i){for(int j0;j<i;j){if(nums[i]>nums[j]){dp[i]max(dp[i],dp[j]1);}}}retu…