在将RocketMQ启动成功后,通过Java客户端程序连接时,抛出如下错误:
org.apache.rocketmq.client.exception.MQClientException: Send [3] times, still failed, cost [9495]ms, Topic: TopicQuickStart, BrokersSent: [localhost.localdomain, localhost.localdomain, localhost.localdomain] See https://rocketmq.apache.org/docs/faq/ for further details. at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:544) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1069) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1023) at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214) at com.huangx.rocketmq.Producer.main(Producer.java:18) Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to failed at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:388) at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:351) at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:335) at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:298) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:696) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:463) ... 4 more
第一步:使用telnet连接一下服务器,看看服务器是否能够正常连接。如果不能,去配置防火墙。
第二步:看看你是否开启VIP通道,如下代码:
/* ** 目前这种写法Rocket默认开启了VIP通道,VIP通道端口为10911-2=10909。 ** 若Rocket服务器未启动端口10909,则报connect to failed。 ** 增加一行代码 */ producer.setVipChannelEnabled(false);
消息消费者同样需要添加这条语句。到这里,问题就解决了。