RocketMQ:No route info of this topic问题解决及虚拟机安装RocketMQ实例
程序员文章站
2022-05-29 11:01:52
...
No route info of this topic
这个问题在今天困扰了我很久,我重新安装了好几遍,在自己电脑虚拟机里面直接安装、采用docker方式安装,在云服务器上直接安装、采用docker方式安装,均出现此问题,当然还有一些其他问题出现,在这里就不说了,快疯了,最后一次尝试,在虚拟机里面直接安装,冷静下来想了一下,RocketMQ是需要broker和server两个服务一起工作的,然而我为了避免内存问题和ip问题一直是在broker那里进行操作,却遗漏了server,马上回过去启动server,果然就成功了,接下来贴出虚拟机直接安装RocketMQ的实例,至于docker方式,这里就不贴了
#首先将RocketMQ的压缩包传入自定义的目录,然后解压缩,至于目录问题,大家看自己的喜好
#进入解压目录
cd {RocketMQ home}/bin
#这里是自己练手的话,建议还是把内存大小参数改了,打开如下两个.sh,然后对应着去修改
vim runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m XX:MaxMetaspaceSize=128m"
vim runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"
#为了避免犯我上面说的那种低级错误,现在就启动server服务,注意目录位置不要改变
./mqnamesrv
#出现如下所示即为成功
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (270336k) is equal to or greater than the entire heap (131072k). A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON
#接下来可以新开一个命令行窗口
#不要直接启动broker服务,因为这里是我们自己虚拟机里面安装,所以会出现ip问题
#现在要建立一个conf配置文件,目录大家随意,可以就在现在的目录进行创建,但是一会启动的时候需要指定完整路径
vim {完整路径}/broker.conf
brokerIP1=虚拟机ip
namesrvAddr=虚拟机ip:9876
brokerName=brokerName #这里可以随意取
#保存退出后,注意现在的路径还是刚刚的路径,路径变了的话,需要改过来,才可以执行下面的命令
./mqbroker -c {完整路径}/broker.conf
#出现如下所示即为成功,注意ip为自己虚拟机的ip
The broker[shuai, 192.168.xx.xxx:10911] boot success. serializeType=JSON and name server is 192.168.xx.xxx:9876
接下来可以写一段代码进行测试
pom.xml
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.3.2</version>
</dependency>
java代码
public class Test{
public static void main(String[] args) throws Exception {
DefaultMQProducer producer = new DefaultMQProducer("test");
producer.setNamesrvAddr("192.168.xx.xxx:9876");
producer.start();
//发送消息
String msg = "这是一个信息";
Message message = new Message("shuai", "message", msg.getBytes("UTF-8"));
message.putUserProperty("sex","男");
message.putUserProperty("age","20");
SendResult sendResult = producer.send(message);
System.out.println("消息id:" + sendResult.getMsgId());
System.out.println("消息队列:" + sendResult.getMessageQueue());
System.out.println("消息offset值:" + sendResult.getQueueOffset());
System.out.println(sendResult);
producer.shutdown();
}
}
顺利打印出如下值即为成功
消息id:C0A801652E2018B4AAC25B5297910000
消息队列:MessageQueue [topic=shuai, brokerName=shuai, queueId=0]
消息offset值:1
上一篇: 程序修改有关问题