ContOS7 安装RocketMQ

ContOS7安装RocketMQ

JDK1.8 安装

前言:

Linux系统安装之后其实是自带了jdk的,但我们需要配置为自己要用的jdk版本。

一,删除原JDK

二,配置新JDK

三,切换JDK

正文:

一,删除原JDK

1,查看系统的Java版本

命令:java -version

2,查看系统安装的jdk

命令:rpm -qa | grep -i jdk

3,删除之前的jdk

命令:rpm -e --nodeps jdk包名 (如:rpm -e --nodeps jdk-1.7.0_75-fcs.x86_64)

注:我的删不掉,不知道为什么,不过不删也没事,之后切换到要用的版本就行了

二,配置新JDK

1,创建jdk安装目录

命令:[root@localhost ~]# mkdir -p /usr/local/src/jdk ([root@localhost ~]# 是为了让大家注意命令执行时所处的文件夹)

2,下载jdk包

方案一:

命令:[root@localhost jdk]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

注意:如果上面wget命令不能用,报错:-bash: wget: command not found。执行一下该命令(安装依赖包) yum -y install wget

注意 : 记住需要加上:--no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" 这段是为了避开用户验证用的

方案二:

在本机先把jdk文件下载好(在我的博客中搜索jdk可以查询到下载步骤,linux用后缀为tar.gz的文件),然后用WinSCP(上一章有介绍)把jdk文件放到对应目录下

jdk下载路径:链接:https://pan.baidu.com/s/1xJ2r4TWqWup_HHKk0wepmg 提取码:zb15

3,解压jdk包

命令:[root@localhost jdk]# tar -zxvf jdk-8u212-linux-x64.tar.gz (文件名可以输入一部分后按tab键自动补全)

4,自定义文件夹名称

命令:[root@localhost jdk]# mv jdk1.8.0_131 jdk1.8

其实可以直接在WinSCP下改,也可以解压改名后再放过来,但我没有尝试

5,配置环境变量

命令:[root@localhost bin]# vi /etc/profile (可以看到这个文件的内容,profile文件有点类似于windows系统里面的环境变量的配置)

shift + g 定位到最后一行

这个时候按一下a或i键,进入编辑模式

需要配置的内容:

export JAVA_HOME=/root/soft/jdk1.8.0_131

export PATH=PATH:JAVA_HOME/bin

image.png

6,退出文件,保存

按Esc键 输入:wq 保存并退出

7,让配置文件生效

命令:[root@localhost jdk]# source /etc/profile

8,查看是否配置成功

命令:java -version

因为我前面没有卸载原有的JDK,所以这里还是显示的原JDK版本号

三,切换JDK

  1. 查看当前系统内有几个可用的Java

命令:alternatives --config java

想要我们新安装的1.8能够显示出来,还需要再做处理

  1. 添加已安装的jdk1.8

命令: alternatives --install <链接> <名称> <路径> <优先度>

alternatives --install /usr/bin/java java /root/soft/jdk1.8.0_131/bin/java 2

  1. 选择要使用的jdk

    命令:alternatives --config java

    要选择哪个,就输入哪个编号,回车就行(比如我需要1.8,就是输入2,回车)

    java -version 查看是否配置成功

安装RocketMQ

参考官网

http://rocketmq.apache.org/docs/quick-start/

下载软件包

wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

unzip rocketmq-all-4.7.1-bin-release.zip

启动异常处理:

[root@localhost bin]# ./mqbroker -n localhost:9876
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /root/soft/rocketmq-all-4.7.1-bin-release/bin/hs_err_pid13941.log

# 原因:rocketmq默认的使用内存4G,虚拟机内存不足
# 解决:将以下sh脚本添加到文件中,关于jvm内存参数调整到系统内存容序的参数值

[root@localhost bin]# vim runbroker.sh 
[root@localhost bin]# vim runserver.sh 
[root@localhost bin]# vim tools.sh 
例如:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

操作命令

cd rocketmq-all-4.7.1-bin-release/bin

  1. 启动NameServer

    # 1.启动NameServer 
    mqnamesrv 
    后台启动:`nohup sh mqnamesrv &`
    # 2.查看启动日志 
    tail -f ~/logs/rocketmqlogs/namesrv.log
    # 3.停止服务
    sh mqshutdown namesrv
    
  1. 启动Broker

    # 1.启动Broker 
    mqbroker -n localhost:9876 
    后台启动:`nohup sh mqbroker -n localhost:9876 &`
    # 2.查看启动日志 
    tail -f ~/logs/rocketmqlogs/broker.log
    # 3.停止服务
    sh mqshutdown broker
    
  2. 查看启动

[root@localhost bin]# jps
43427 Jps
34423 BrokerStartup
33739 NamesrvStartup

   

   
4. 关闭服务

   ~~~shell
   [root@localhost bin]# sh mqshutdown broker
   The mqbroker(34423) is running...
   Send shutdown request to mqbroker(34423) OK
   [root@localhost bin]# sh mqshutdown namesrv
   The mqnamesrv(33739) is running...
   Send shutdown request to mqnamesrv(33739) OK

创建主题topic

sh mqadmin updateTopic -b 127.0.0.1:10911 -t TopicA

创建消费组

sh mqadmin updateSubGroup -b 127.0.0.1:10911 -g SubGroupA
  1. 消息发送测试

    1. 先启动消费者

      export NAMESRV_ADDR=localhost:9876 && sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
      
  1. 再启动生产者

    export NAMESRV_ADDR=localhost:9876 && sh tools.sh org.apache.rocketmq.example.quickstart.Producer
    

    可以看到生产者发送了很多消息,消费者在几秒之后也受到了消息。

rocketmq可以外网访问

  1. 修改broker配置

    cd rocketmq-all-4.7.1-bin-release/bin

sh mqshutdown broker
sh mqbroker -m >broker.p
vim broker.p 
修改里面的IP地址如下
namesrvAddr=192.168.142.128:9876
brokerIP1=192.168.142.128
brokerName=localhost
brokerClusterName=DefaultCluster
[root@localhost bin]# cat broker.c
namesrvAddr=192.168.142.128:9876
brokerIP1=192.168.142.128
brokerName=localhost.localdomain
brokerClusterName=DefaultCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
msgTraceTopicName=RMQ_SYS_TRACE_TOPIC
traceTopicEnable=false
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
transactionTimeOut=6000
transactionCheckMax=15
transactionCheckInterval=60000
aclEnable=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=500
commitIntervalCommitLog=200
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
transientStorePoolEnable=false
  1. 启动配置

    # 启动namesrv
    nohup sh mqnamesrv &
    # 启动broker
    nohup sh mqbroker -c broker.p autoCreateTopicEnable=true &
    
    

实例代码

生产者

public class Producer {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
        producer.setNamesrvAddr("192.168.142.128:9876");
        producer.start();

        for (int i = 1000; i < 2000; i++) {
            try {
                Message msg = new Message("TopicTest" /* Topic */,
                    "TagA" /* Tag */,
                    ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
                );
                SendResult sendResult = producer.send(msg);

                System.out.printf("%s%n", sendResult);
            } catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }
        producer.shutdown();
    }
}

消费者

public class Consumer {

    public static void main(String[] args) throws InterruptedException, MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
        consumer.setNamesrvAddr("192.168.142.128:9876");
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        consumer.subscribe("TopicTest", "*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                        ConsumeConcurrentlyContext context) {
                System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n");
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        System.out.printf("Consumer Started.%n");
    }
}

问题处理

MQClientException: No route info of this topic, TopicTest

nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &

RocketMQ—connect to 192.168.xxx.xxx:9876 failed

1.相互之间ping一下看看能不能通;
2.ping一下外网看看能不能通(一般使用桥接模式);
如果上述两个都通,那说明网络上应该是没什么问题的.

3.看看后台进程中是否有开启相应的服务,如果有9876端口,那就说明是正常的

netstat -ntlp

4.相互之间telnet一下

telnet 192.168.142.128 9876

如果未安装telnet,可以通过如下命令进行安装:

yum list telnet*    查看telnet相关的安装包
yum install telnet-server  安装telnet服务
yum install telnet.*  安装telnet客户端

一般情况出现上述错误这边telnet应该是不通的,原因是防火墙开着,我们需要将防火墙关闭.

1.firewall防火墙

(1)首先查看防火墙的状态

systemctl status firewalld

(2)如果防火墙开着,那么将其关闭

systemctl stop firewalld          
systemctl disable firewalld    #禁止firewall开机启动

2.iptables防火墙

这个很容易被忽视,或者是一不小心被打开,步骤依然如上

(1)先查看其状态

service iptables status

(2)如果开着将其关闭

service iptables stop                --临时关闭防火墙
chkconfig iptables off               --永久关闭防火墙

尊重原创

参考地址:

https://blog.csdn.net/kkgbn/article/details/78255471

https://blog.csdn.net/gwd1154978352/article/details/80785530

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容