BUG-RocketMQ之sendDefaultImpl call timeout 和 No route info of this topic

  • 運行環境

  • [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

  • 搜出來的結果:

    1. 防火牆沒關,好吧,我去看了一下我虛擬機的firewalld已經被我卸了,iptables也被我關了。???而且還有一個奇葩的是我的消費者端是可以通過console添加消息讀取到虛擬機裏面的數據的。所以防火牆沒問題!!!!
    1. 第二個是說BrokerIP設置有問題,好吧 我是用hosts文件中的名字的,我老實點,改成ip,一樣沒用!!!
    1. 第三個終於到要點了,timeout!!!!對呀timeout!,但是producer的方法中有一個producer.setSendMsgTimeout();我開始設置了10000,....然後10s過去了。依舊給我了timeout。我本以爲要終結從入門到放棄了。終於到要點了,producer.send(msg,timeout) EXM????我知道我找到了要點了。然後果斷的設置10000,一跑 成功了。!!!!!

你以爲完了?太天真了!再我後面跑另外一個設置監聽的Demo的時候也就是用

SendCallback回調方法發送消息的時候,問題又來了

  • MQClientException: No route info of this topic......
  • 好吧,我服了,我又面向搜索引擎編程了:
    1. 沒有設置autoCreateTopicEnable=true 可以在配置文件設置,也可以在啓動上加參數
    1. 如果用SendCallBack,那就把producer.shutdown()去掉!!!!不要調用shutdown!作死!明白???你都關掉了 還怎麼CallBack???emmm好了 這裏要吐槽一下。

總結一下,如果用虛擬機自建的局域網,可能訪問會有延遲,不知道爲什麼,我沒有研究過,但是我用macSSH到虛擬機經常要卡幾秒。所以可能造成timeout RocketMQ的默認timeout應該是3000也就是3s。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章