使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)

目录

解压安装包

启动nameserver

调整默认的内存大小参数

重启nameserver

启动broker

测试消息通信

在java项目中测试rocketmq

新建Demo项目

新建测试类

指定broker的ip地址

启动测试类


 

解压安装包

 

我们把下载好的安装包放到项目文件夹中

 使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第1张图片

解压

cd /haoke
unzip rocketmq-all-4.3.2-bin-release.zip

 

 

 启动nameserver

 

cd rocketmq-all-4.3.2-bin-release/bin/
./mqnamesrv

但是我们发现启动失败,从报错信息可以看出是内存的问题。RocketMQ的配置默认是生产环境的配置,设置的jvm的内存
大小值比较大,对于学习而言没有必要设置这么大,测试环境的内存往往都不是很大,所以需要调整默认值。

 

 

 调整默认的内存大小参数

 

 在bin目录下编辑文件

vim runserver.sh

我们把这一行的4g,2g都改成128m

使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第2张图片

JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

 

我们再修改runbroker文件

vim runbroker.sh

这一行全都改成128m 

 使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第3张图片

JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"

 

 

重启nameserver

 

 输入命令

./mqnamesrv

使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第4张图片

 

 

启动broker

 

我们新复制一个会话,同样进入RocketMQ的bin目录下

./mqbroker -n 192.168.62.132:9876

可以看到broker也启动起来了 

 

 

 

测试消息通信

 

再复制一个会话,同样进入rocketmq的bin目录下

我们先设置环境变量

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

可以看到,我们的消息发送成功了 

使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第5张图片

 

 接下来我们测试能否获取消息

sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

消息可以成功获取,我们的消息通信测试成功了

使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第6张图片

 

 

 在java项目中测试rocketmq

 

 为什么还要在项目中再测试一遍?

注意broker的地址172.xxx这个不是你服务器对外暴露的地址,仅支持broker自用。所以如果不把地址配置成允许外部访问,在java项目中是访问不到broker的。

 

新建Demo项目

  
    
      org.apache.rocketmq
      rocketmq-client
      4.3.2
    
  
  
    
      
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.2
        
          1.8
          1.8
          UTF-8
        
      
    
  

 

新建测试类

我们新建的这个类用来测试能不能连接服务器中的RocketMQ发送消息

package cn.itcast.rocketmq;

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.common.RemotingHelper;

public class SyncProducer {
    public static void main(String[] args) throws Exception {
        //Instantiate with a producer group name.
        DefaultMQProducer producer = new
                DefaultMQProducer("test-group");
        // Specify name server addresses.
        producer.setNamesrvAddr("192.168.62.132:9876");
        //Launch the instance.
        producer.start();
        for (int i = 0; i < 100; i++) {
            //Create a message instance, specifying topic, tag and message body.
            Message msg = new Message("TopicTest11" /* Topic */,
                    "TagA" /* Tag */,
                    ("Hello RocketMQ " +
                            i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

 

指定broker的ip地址

接下来我在broker这个服务器会话中操作。

vim /haoke/rmq/rmqbroker/conf/broker.conf

 

写入ip配置

brokerIP1=192.168.62.132
namesrvAddr=192.168.62.132:9876
brokerName=broker_haoke_im

然后保存退出。注意,如果提示你不能保存是因为你新建的这个目录没有权限,在新建broker.conf文件之前,把它的父级文件夹授权即可(可读可写)。

 

再次启动broker

我们在bin文件夹下输入启动命令

./mqbroker -c /haoke/rmq/rmqbroker/conf/broker.conf

可以看到与之前的相比,broker的名字,ip地址都发生了改变

 

启动测试类

可以发现,消息队列成功发送了消息

使用Ubuntu16.04安装RocketMQ4.3.2(不使用Docker)_第7张图片

你可能感兴趣的:([RocketMQ],[Linux])