hello,我也是最近遇到了这个问题,已经查到原因:
4.3.0版本中,异步发送起了新的线程进行发送,不阻塞当前线程,在异步发送之前,producer已经shutdown,导致发送前创建channel失败,获取不到route
info;
解决方案:shutdown之前sleep等待一段时间
----- 原始邮件 -----
发件人:"[email protected]" <[email protected]>
收件人:users <[email protected]>
主题:关于MQClientException: No route info of this topic
日期:2018年09月27日 14点54分
你好,
目前偶尔会遇到错误:
MQClientException: No route info of this topic
我的场景如下:
服务器启动命令:
nohup sh bin/mqnamesrv &nohup sh bin/mqbroker -n localhost:9876
autoCreateTopicEnable=true &
Console看到的配置如下:
我在Console上也能成功手动发送消息,但是通过代码就会报错。。
代码如下:
public class AsyncProducer {
public static void main(
String[] args) throws MQClientException, InterruptedException,
UnsupportedEncodingException {
DefaultMQProducer producer = new DefaultMQProducer("Jodie_Daily_test");
producer.setNamesrvAddr("120.92.213.192:9876");
producer.start();
// producer.setRetryTimesWhenSendAsyncFailed(0); // for test retry
for (int i = 0; i < 1; i++) {
try {
final int index = i;
Message msg = new Message("Jodie_topic_1023",
"TagA",
"Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
producer.send(msg, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.printf("%-10d OK %s %n", index,
sendResult.getMsgId());
}
@Override
public void onException(Throwable e) {
System.out.printf("%-10d Exception %s %n", index, e);
e.printStackTrace();
System.out.println("Send failed...");
}
});
} catch (Exception e) {
e.printStackTrace();
System.out.println("Send failed.");
}
}
producer.shutdown();
}
}请问下,什么原因??
[email protected]