使用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)
还没有任何评论哟~
