linux 安装rocketmq并使用

RocketMQ 因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景

目录

1、官网下载 RocketMQ

2、安装 RocketMQ

3、启动 RocketMQ

4、代码测试

5、RocketMQ Dashboard 安装

6、关闭 RocketMQ


1、官网下载 RocketMQ

RocketMQ 官网:RocketMQ · 官方网站 | RocketMQ

 笔者这里选择 4.9.4版本

2、安装 RocketMQ

下载安装包后,将安装包上传到 linux

创建 RocketMQ 安装目录

mkdir -p /usr/local/rocketmq

将安装包解压到新建的安装目录

unzip -d /usr/local/rocketmq rocketmq-all-4.9.4-bin-release.zip

如果没有安装 unzip,可以执行下面命令安装

yum install -y unzip zip 

 进入 rocketmq 安装目类

cd /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release

创建存放数据的目录

mkdir -p store store/commitlog store/consumequeue

进入 conf 目录

cd conf

编辑 broker.conf 文件

vi broker.conf

 在  broker.conf 文件中追加下面内容

 
  1. listenPort=10911

  2. namesrvAddr=localhost:9876

  3. storePathRootDir=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/store

  4. storePathCommitLog=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/store/commitlog

  5. storePathConsumerQueue=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/store/consumequeue

修改内存大小(这步不是必须的,如果你的机器内存足够,可以跳过这步,笔者机器内存只有1g,因此需要修改内存大小)

进入 bin 目录

cd /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/bin

编辑 runbroker.sh 文件和 runserver.sh 文件,修改内存大小

编辑 runbroker.sh 文件,将 8g 修改为 512m

vi runbroker.sh

 修改后

编辑 runserver.sh 文件

vi runserver.sh

 这里对 java 版本进行了判断,上面 2 处配置笔者都修改为 512m

开放防火墙 9876 和 10911 端口

firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent

更新防火墙规则(无需断开连接,动态添加规则)

firewall-cmd --reload

查看防火墙所有开放的端口

firewall-cmd --list-port

3、启动 RocketMQ

在 bin 目录下,执行下面命令

启动nameserver

nohup sh mqnamesrv &

启动 broker

nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/conf/broker.conf &

查看运行状态

ps -ef | grep mqnamesrv

ps -ef | grep mqbroker

4、代码测试

新建 maven 项目,添加 rocketmq-client 依赖

 
  1. <dependency>

  2. <groupId>org.apache.rocketmq</groupId>

  3. <artifactId>rocketmq-client</artifactId>

  4. <version>4.9.4</version>

  5. </dependency>

官网示例

生产者代码

将 ip 地址修改为 linux 地址,笔者这里是 192.168.0.103

 
  1. package client.sample;

  2. import org.apache.rocketmq.client.producer.DefaultMQProducer;

  3. import org.apache.rocketmq.client.producer.SendResult;

  4. import org.apache.rocketmq.common.message.Message;

  5. import org.apache.rocketmq.remoting.common.RemotingHelper;

  6. /**

  7. * SyncProducer

  8. *

  9. * @author wsjz

  10. * @date 2022/07/01

  11. */

  12. public class SyncProducer {

  13. public static void main(String[] args) throws Exception {

  14. //Instantiate with a producer group name.

  15. DefaultMQProducer producer = new

  16. DefaultMQProducer("please_rename_unique_group_name");

  17. // Specify name server addresses.

  18. producer.setNamesrvAddr("192.168.0.103:9876");

  19. //Launch the instance.

  20. producer.start();

  21. for (int i = 0; i < 100; i++) {

  22. //Create a message instance, specifying topic, tag and message body.

  23. Message msg = new Message("TopicTest" /* Topic */,

  24. "TagA" /* Tag */,

  25. ("Hello RocketMQ " +

  26. i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */

  27. );

  28. //Call send message to deliver message to one of brokers.

  29. SendResult sendResult = producer.send(msg);

  30. System.out.printf("%s%n", sendResult);

  31. }

  32. //Shut down once the producer instance is not longer in use.

  33. producer.shutdown();

  34. }

  35. }

消费者代码

 
  1. package client.sample;

  2. import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;

  3. import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;

  4. import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;

  5. import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;

  6. import org.apache.rocketmq.client.exception.MQClientException;

  7. import org.apache.rocketmq.common.message.MessageExt;

  8. import java.util.List;

  9. /**

  10. * Consumer

  11. *

  12. * @author wsjz

  13. * @date 2022/07/01

  14. */

  15. public class Consumer {

  16. public static void main(String[] args) throws InterruptedException, MQClientException {

  17. // Instantiate with specified consumer group name.

  18. DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");

  19. // Specify name server addresses.

  20. consumer.setNamesrvAddr("192.168.0.103:9876");

  21. // Subscribe one more more topics to consume.

  22. consumer.subscribe("TopicTest", "*");

  23. // Register callback to execute on arrival of messages fetched from brokers.

  24. consumer.registerMessageListener(new MessageListenerConcurrently() {

  25. @Override

  26. public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,

  27. ConsumeConcurrentlyContext context) {

  28. System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);

  29. return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;

  30. }

  31. });

  32. //Launch the consumer instance.

  33. consumer.start();

  34. System.out.printf("Consumer Started.%n");

  35. }

  36. }

运行效果

5、RocketMQ Dashboard 安装

RocketMQ Dashboard安装可以选择使用 docker方式也可以使用源码方式安装,笔者下面介绍源码方式安装

官方文档:https://rocketmq.apache.org/zh/docs/deploymentOperations/17Dashboard/

先在github上下载源码

RocketMQ Dashboard 源码地址: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.

将项目克隆到本地文件夹

使用eclipse等编辑器打开项目

项目是 springboot项目,找到 application.yml 文件,修改 rocketmq 地址

笔者的地址是192.168.0.103:9876

不使用 VIP 通道,改为 false

启动项目,浏览器访问 http://localhost:8080 

如果需要的话,可以将RocketMQ Dashboard打成 jar 包,进行部署

RocketMQ Dashboard安装成功

6、关闭 RocketMQ

进入bin目录

关闭 broker

sh mqshutdown broker

关闭 nameserver

sh mqshutdown namesrv

至此完

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

掌握 Istio:部署完成后如何运用?

一、环境情况 环境&#xff1a;Ubuntu20.04 机器数量&#xff1a;单机1台 IP&#xff1a;10.9.2.83 二、准备知识 为什么使用 Istio&#xff1f; Istio提供了一种更高级别的服务网格解决方案&#xff0c;它可以简化和加强 Kubernetes 集群中的服务间通信、流量管理、安全…

小红书图片怎么提取?小红书图片提取原图方法!

说到小红书&#xff0c;不少女性群体都知道这个&#xff0c;他的价值很高而且变现对于大多数做自媒体的小伙伴来说&#xff0c;也是不错的选择&#xff01; 小红书对于普通大众还是互联网创作者来说&#xff0c;都太实用了&#xff0c;唯一的缺点可能就是当我们需要存储他的图…

如何在Linux安装Yearning并修改配置文件实现无公网IP远程访问本地管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…

LeetCode刷题【树状数组、并查集】

目录 树状数组307. 区域和检索 - 数组可修改406. 根据身高重建队列673. 最长递增子序列的个数1409. 查询带键的排列 并查集128. 最长连续序列130. 被围绕的区域 树状数组 307. 区域和检索 - 数组可修改 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 …

EasyExcel模板填充list时按第一行格式合并单元格(含分页线设置)

前言&#xff1a; 在使用easyExcel填充list时&#xff0c;第一行存在合并单元格的情况下&#xff0c;后面使用forceNewRow()填充的行却没有合并样式。 模板&#xff1a; 填充后&#xff1a; 自定义拦截器&#xff1a; 根据官方文档的提示&#xff0c;我们需要自定义拦截器来…

21个 JVM 技术点详解(附面试解答)

最近兄弟们面试&#xff0c;都逃不过被 JVM 问题轰炸的命运&#xff0c;为啥面试官喜欢拿 JVM 说事呢&#xff1f;V 哥认为&#xff0c;除了要问倒你&#xff0c;就是要压你薪水&#xff0c;咱绝对不能怂&#xff0c;俗话说的好&#xff1a;兵来将挡&#xff0c;水来土掩&#…

VS+QT Debug正常但Release无法识别头文件

&#xff01;&#xff01;&#xff01;&#xff0c;这个问题一般是在第一次编译的时候遇见的&#xff0c;包括之前使用debug也是 在Qt Installation一定要修改成自己版本的编译器&#xff0c;修改一次以后基本是不用再修改的

力扣---括号生成---回溯---dfs/二进制

暴力--二进制 采用与&#xff1a;力扣---子集---回溯&#xff08;子集型回溯&#xff09;---递归-CSDN博客 中二进制求解一样的思路&#xff0c;即遍历0~-1&#xff08;从二进制去考虑&#xff09;&#xff0c;如果这个数的第 i 位为0&#xff0c;则括号的第 i 位为‘&#xff…

记一次Oracle 19C RAC 在线更换数据盘和OCR盘操作记录

欢迎您关注我的公众号【尚雷的驿站】 **************************************************************************** 公众号&#xff1a;尚雷的驿站 CSDN &#xff1a;https://blog.csdn.net/shlei5580 墨天轮&#xff1a;https://www.modb.pro/u/2436 PGFans&#xff1a;ht…

华为ensp中rip动态路由协议原理及配置命令(详解)

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言————— RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种距离矢…

【Java】Oracle发布Java22最新版本

甲骨文&#xff08;ORACLE&#xff09;已经于2023年3月19日正式发布了最新版本的JDK&#xff0c;版本号&#xff1a;22 根据官方声明&#xff0c;Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进&#xff0c;包括对Java 语言、其API 和性能&#xff0c;以…

raid规划配置

一 raid基本知识 1、RAID磁盘阵列概述 磁盘阵列的全名&#xff08;Redundant Arrays of Inexpensive Disk&#xff0c;RAID&#xff09;&#xff0c;中文简称是独立冗余磁盘阵列。 RAID可以通过技术&#xff08;软件或者硬件&#xff09;将多个独立的物理硬盘整合成为一个较大…

探索山海鲸可视化:相较于Excel的独特优势分析

作为一名新用户&#xff0c;我近期开始接触并尝试使用山海鲸可视化工具&#xff0c;这款软件最初吸引我的点在其免费可视化编辑、本地化部署的特点&#xff0c;用了一段时间后&#xff0c;我发现相较于之前使用的Excel来制作可视化看板&#xff0c;两者在多个方面有着显著的区别…

electron-builder允许安装时请求提升权限

场景 在下面的场景中可能会需要管理员权限&#xff1a; electron开发的软件具有文件操作功能&#xff0c;如果electron安装到C盘&#xff0c;并操作项目中&#xff08;C盘&#xff09;的文件&#xff0c;就会因权限不足报错。electron需要操作注册表等系统级关键配置某些命令…

浅尝大菠萝Pinia

1、pinia简介 Pinia&#xff08;发音为 /piːnjʌ/&#xff0c;类似于英语中的“peenya”&#xff09;是最接近有效包名 pia&#xff08;西班牙语中的_pineapple_&#xff09;的词。 Pinia 是由 Vue.js 团队成员开发&#xff0c;新一代的状态管理器&#xff0c;即 Vuex5.x。 …

Godot 学习笔记(2):信号深入讲解

文章目录 前言相关链接环境信号简单项目搭建默认的信号先在label里面预制接收函数添加信号 自定义无参数信号为了做区分&#xff0c;我们在label新增一个函数 自定义带参数信号Button代码label代码连接信号 自定义复杂参数信号自定义GodotObject类ButtonLabel连接信号 父传子Ca…

如何查看zip文件的MD5码

目录 Windows macOS 和 Linux 要查看zip文件的MD5码&#xff0c;你可以使用不同的方法&#xff0c;具体取决于你使用的操作系统。以下是一些常见平台的指导&#xff1a; Windows 可以使用PowerShell来计算文件的MD5码。打开PowerShell&#xff0c;然后使用以下命令&#xf…

wireshark 使用实践

1、打开wireshark软件&#xff0c;选择网卡&#xff0c;开始抓包 2、打开浏览器&#xff0c;访问一个http网站&#xff1a;这里我用 【邵武市博物馆】明弘治十一年&#xff08;1498&#xff09;铜钟_文物资源_福建省文 测试&#xff0c;因为它是http的不是https&#xff0c;方…

基于深度学习的场景文本检测

CTPN 简介&#xff1a; 基于目标检测方法的文本检测模型&#xff0c;在Faster RCNN的基础上进行了改进&#xff0c;并结合双向LSTM增强了序列提取特征&#xff0c;通过anchor和gt的设计将文本检测任务转化为一连串小尺度文本框的检测。 解决问题&#xff1a; 文本长短不一&…

jenkins gradle 编译时jvm不足情况

gradle 编译时jvm不足情况 #开启线程守护&#xff0c;第一次编译时开线程&#xff0c;之后就不会再开了org.gradle.daemontrue#配置编译时的虚拟机大小org.gradle.jvmargs-Xmx2048m -XX:MaxPermSize512m -XX:HeapDumpOnOutOfMemoryError -Dfile.encodingUTF-8#开启并行编译&…