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