1、RocketMQ连接java测试类:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.3.0</version>
</dependency> package com.xiaohou.demo.mq;
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 RocketMq {
public static void main(String[] args) throws Exception {
try{
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
producer.setNamesrvAddr("123.123.123.123:9876");//MQ服务器地址
producer.setVipChannelEnabled(false);
producer.start();
for (int i = 0; i < 2; i++) {
Message msg = new Message("TopicTest", "TagA" , ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET));
SendResult sendResult = producer.send(msg);
System.out.printf("%s%n", sendResult);
System.out.println("--");
}
producer.shutdown();
}catch (Exception e){
e.printStackTrace();
}
}
} |
2、运行程序异常情况:
(1)org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest
(2)org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
首先确保防火墙开通9876相关端口,如果是阿里云服务器,秩序在管理控制台上开通端口即可;
登录RocketMQ控制台,查看Cluster,如下:查看Address地址是否为服务器的对外地址
![](https://img-blog.csdnimg.cn/20200113154258893.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdxaWFuMTk5MjAyMTQ=,size_16,color_FFFFFF,t_70)
3、修改brokerIP地址:
观察发现此地址,并不是mq所在服务器的外网地址,用如下方式创建broker.properties及启动:
(1) 在RocketMq目录下新建broker.properties文件,增加以下一行内容,如下:
brokerIP1=mq所在服务器对外IP
(2) 重新启动broker,命令如下:
nohup sh bin/mqbroker -n 123.123.123.123:9876 -c broker.properties &
4、在java测试类中修改如下:
producer.setNamesrvAddr("RocketMQ的IP:9876");//MQ服务器地址
5、重新运行:结果如下
![](https://img-blog.csdnimg.cn/20200113153828452.png)
最后测试成功