運(yùn)行環(huán)境
[x] MacOS Mojave10.14.3
[x] Java 1.8_202
[x] RocketMQ 4.4.0
[x] Vmware Fusion + CentOS7
[x] IDEA
最近在學(xué)習(xí)RocketMQ第一個demo就炸了???莫名其妙timeout
事情是這樣的,我在Vmware Fusion里面自定義了一個局域網(wǎng)然后用Mac連過去,然后就跑Apache官方的消費(fèi)者生產(chǎn)者代碼,然后???exm??就一直報sendDefaultImpl call timeout。好吧 那我就面向搜索引擎編程吧?。?!
插入:自建內(nèi)部局域網(wǎng):https://blog.csdn.net/zhishengqianjun/article/details/77046796
搜出來的結(jié)果:
- 防火墻沒關(guān),好吧,我去看了一下我虛擬機(jī)的firewalld已經(jīng)被我卸了,iptables也被我關(guān)了。???而且還有一個奇葩的是我的消費(fèi)者端是可以通過console添加消息讀取到虛擬機(jī)里面的數(shù)據(jù)的。所以防火墻沒問題!!?。?/li>
- 第二個是說BrokerIP設(shè)置有問題,好吧 我是用hosts文件中的名字的,我老實點(diǎn),改成ip,一樣沒用?。?!
- 第三個終于到要點(diǎn)了,timeout?。。。ρ絫imeout!,但是producer的方法中有一個
producer.setSendMsgTimeout();我開始設(shè)置了10000,....然后10s過去了。依舊給我了timeout。我本以為要終結(jié)從入門到放棄了。終于到要點(diǎn)了,producer.send(msg,timeout)EXM????我知道我找到了要點(diǎn)了。然后果斷的設(shè)置10000,一跑 成功了。!?。。?!
- 第三個終于到要點(diǎn)了,timeout?。。。ρ絫imeout!,但是producer的方法中有一個
你以為完了?太天真了!再我后面跑另外一個設(shè)置監(jiān)聽的Demo的時候也就是用
SendCallback回調(diào)方法發(fā)送消息的時候,問題又來了
- MQClientException: No route info of this topic......
- 好吧,我服了,我又面向搜索引擎編程了:
- 沒有設(shè)置autoCreateTopicEnable=true 可以在配置文件設(shè)置,也可以在啟動上加參數(shù)
- 如果用SendCallBack,那就把
producer.shutdown()去掉?。。。〔灰{(diào)用shutdown!作死!明白???你都關(guān)掉了 還怎么CallBack???emmm好了 這里要吐槽一下。
- 如果用SendCallBack,那就把
總結(jié)一下,如果用虛擬機(jī)自建的局域網(wǎng),可能訪問會有延遲,不知道為什么,我沒有研究過,但是我用macSSH到虛擬機(jī)經(jīng)常要卡幾秒。所以可能造成timeout RocketMQ的默認(rèn)timeout應(yīng)該是3000也就是3s。