Advertisement

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

阅读量:

目录

解压安装包

启动nameserver

调整默认的内存大小参数

重启nameserver

启动broker

测试消息通信

在java项目中测试rocketmq

新建Demo项目

新建测试类

指定broker的ip地址

启动测试类


解压安装包

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

解压

复制代码
    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

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

我们再修改runbroker文件

复制代码
    vim runbroker.sh
    

这一行全都改成128m

复制代码
    JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"
    

重启nameserver

输入命令

复制代码
    ./mqnamesrv
    
    

启动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
    

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

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

复制代码
    sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
    

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

在java项目中测试rocketmq

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

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

新建Demo项目

复制代码
   <dependencies>

    
     <dependency>
    
       <groupId>org.apache.rocketmq</groupId>
    
       <artifactId>rocketmq-client</artifactId>
    
       <version>4.3.2</version>
    
     </dependency>
    
   </dependencies>
    
   <build>
    
     <plugins>
    
       <!-- java编译插件 -->
    
       <plugin>
    
     <groupId>org.apache.maven.plugins</groupId>
    
     <artifactId>maven-compiler-plugin</artifactId>
    
     <version>3.2</version>
    
     <configuration>
    
       <source>1.8</source>
    
       <target>1.8</target>
    
       <encoding>UTF-8</encoding>
    
     </configuration>
    
       </plugin>
    
     </plugins>
    
   </build>
    
    
    
    

新建测试类

我们新建的这个类用来测试能不能连接服务器中的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地址都发生了改变

启动测试类

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

全部评论 (0)

还没有任何评论哟~