Linux环境下安装RocketMQ

本文详细介绍了如何在Linux系统中安装JDK和RocketMQ,包括下载、解压、配置环境变量以及启动RocketMQ的各个步骤。同时,文章提到了RocketMQ作为消息中间件的特点,如消息顺序保证、丰富的拉取模式等,并展示了如何通过命令行及IDEA发送和接收消息。
摘要由CSDN通过智能技术生成

简介

简单来说,消息队列就是基础数据结构课程里“先进先出”的一种数据结构,但是如果要消除单点故障,保证消息传输的可靠性,并且还能应对大流量的冲击,对消息队列的要求就很高了。现在互联网“微架构”模式兴起,原有大型集中分布式的IT服务因为各种弊端,通常被分拆成细粒度的多个“微服务”,这些微服务可以在一个局域网内,也可能跨机房部署。一方面对服务之间 松耦合的要求越来越高。分布式消息队列可以提供应用解耦、流量削峰、消息发布等功能,已经成为大型互联网服务架构里标配的中间件。


前言

RocketMQ是java语言开发的,所以运行需要jdk环境

RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:

1.能够保证严格的消息顺序

2.提供丰富的消息拉取模式

3.高效的订阅者水平扩展能力

4.实时的消息订阅机制

5.亿级消息堆积能力


一、Linux安装JDK

1.下载连接

官网传送门:

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

鉴于官网下载比较麻烦,本人也提供了百度云网盘下载地址:
链接:https://pan.baidu.com/s/1b5QcHxYJAJ9BV0jdencWHA
提取码:5200

2.配置jdk环境

将下载好的jdk文件拖到linux服务器上,我这里是放在了/usr/local/soft目录下,soft目录不存在可以新建 ,这里linux可视化工具恩多,我自己用的Mobaxterm,也有一些winscp等等,大家自己选择
文件可以直接从本地拖拽放到此处

解压jdk文件

先进入当前目录:cd usr/local/soft
在这里插入图片描述
解压指令:tar -zxvf 你的jdk压缩包文件名
我这里是jdk-8u281-linux-x64.tar.gz
所以我是tar -zxvf jdk-8u281-linux-x64.tar.gz
解压完可以用命令查看一下当前文件: ls
在这里插入图片描述

配置jdk环境变量

修改etc下的配置文件
命令:vim /etc/profile
在这里插入图片描述
调转出这个页面之后,输入i可以进行修改,在第一行或者尾部插入数据就ok!
需要配置三个标签JAVA_HOME,CLASSPATH,PATH
JAVA_HOME:对应你jdk的目录
PATH:jdk的bin目录
CLASSPATH:如上图

修改完按一下esc,然后输入:wq进行保存。
刷新一下/etc/profile 使修改生效
命令:source /etc/profile

测试jdk环境是否生效

输入指令:java -version
查看当前jdk版本
在这里插入图片描述

二、安装RocketMQ

1.下载rocketmq安装包

官网传送门:

http://rocketmq.apache.org/dowloading/releases/
在这里插入图片描述
百度云网盘地址:
链接: https://pan.baidu.com/s/1d1UjcgABmdYhVp4OwHlI3w
提取码:5200

2.配置rocketmq

文件拖拽到linux目录下

目录: /usr/local/soft (soft如果不存在自己创建)

在这里插入图片描述

解压rocketmq压缩包

进入安装包文件目录
执行解压命令: unzip rocketmq-all-4.8.0-bin-release.zip -d ./rocketmq-all-4.2.0-binls
在这里插入图片描述

配置rocketmq环境变量

执行命令打开配置文件profile
vim /etc/profile
这里需要配置两个标签rocket和path
export rocketmq=/usr/local/soft/rocketmq-all-4.8.0-bin/rocketmq-all-4.8.0-bin-release/
export PATH=$PATH:$rocketmq/bin
在这里插入图片描述
rocket:对应的是你rocket的目录,有些人这里会不太理解,什么是rocket的目录,说白了就是rocket数据包的根目录可以这么理解吧,通俗的讲就是当前目录下一层就是你目录下的所有文件了,拷贝那一层就行了,这里怕很多人rocketmq解压的时候有很多级目录,注意一下!!!
path:不多说,rocketmq么问题的话,直接写就可以

环境到这里就差不多结束了!!!

3.启动RocketMQ

修改启动内存大小

接下来我们启动一下刚才编译的RocketMQ.在启动之前我们需要修改一下RocketMQ启动的内存大小(如果你的系统内存比较大的话,请忽略)。我们进入rocketmq解压包的bin目录下,在终端中输入以下命令修改mqnamesrv的内存大小:vi runserver.sh.修改为如图的内容:
在这里插入图片描述
接下来修改broker的内存大小:命令为 vi runbroker.sh
在这里插入图片描述

启动mqnameserver

进入rocket的bin目录执行命令
命令:nohup sh mqnamesrv &
&表示后台启动,不能少
在这里插入图片描述
可以通过jps命令查看namesrv是否启动
在这里插入图片描述
我这里显示已经启动了,也可通过查看日志的方式查看
命令:tail -f /root/logs/rocketmqlogs/namesrv.log
在这里插入图片描述
如果显示上述标红的说明已经启动成功!

启动broker

进入rocket的bin目录执行命令
命令:nohup sh mqbroker -n localhost:9876 &
&表示后台启动,不能少
在这里插入图片描述
可以通过jps命令查看broker是否启动
在这里插入图片描述

4.命令行发送和接收消息

进入到rocketmq目录:

发送消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
在这里插入图片描述
接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
在这里插入图片描述

5.IDEA发送和接收消息

SyncProducer 消息生产者

import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;

/**
 * @author jinhu
 * @create 2021-04-15
 * @since 1.0.0
 */
public class SyncProducer {
    public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException {
        DefaultMQProducer producer = new DefaultMQProducer("rocketmq_name1");
        producer.setNamesrvAddr("192.168.64.3:9876");

        producer.start();
        for (int i=0;i<100;i++){
            Message message = new Message("TopciTest", "Hello RocketMQ ".getBytes());
            SendResult send = producer.send(message);
            System.out.printf("%s%n",send);

        }
        producer.shutdown();
    }
}

SyncConsumer 消息消费者

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;
import java.util.List;

/**
 * @author jinhu
 * @create 2021-04-15
 * @since 1.0.0
 */
public class SyncConsumer {
    public static void main(String[] args) throws MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("rocketmq_consumer_v1");
        consumer.setNamesrvAddr("192.168.64.3:9876");
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        consumer.subscribe("TopicTest", "*");

        consumer.registerMessageListener(new MessageListenerConcurrently(){

            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                System.out.printf(Thread.currentThread().getName() + "Receive New Message : " + msgs + "%n");

                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
    }
}

运行测试
运行生产者
在这里插入图片描述
运行消费者
在这里插入图片描述

关闭rocketmq命令

第一次直接粗暴的方式

小伙伴们应该都是会的,直接执行命令:
ps -ef | grep java 找到rocket相关进程的端口号,然后进行kill
命令: kill -9 端口号

rocket本身关闭命令

进入到rocketmq的bin目录
关闭namesrv
执行命令:sh mqshutdown namesrv
在这里插入图片描述
关闭broker
执行命令:sh mqshutdown broker
在这里插入图片描述
最后在执行jps查看当前java进程类
在这里插入图片描述
成功!!!

到此处,rocketmq安装的就差不多了,发送接收消息也没有问题!!!

后续会接着出一些rocketmq的使用方式!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地情圣!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值