2012-07-12 389 views
4

RabbitMQ啓動正常,但鏟子插件狀態列爲「開始」。RabbitMQ Shovel插件卡住「啓動」狀態

我使用以下rabbitmq.config:

每個代理都在單獨的AWS實例上運行。遠程服務器是Windows 2008服務器,本地服務器是Amazon Linux。

[{rabbitmq_shovel, 
    [{shovels, 
    [{scrape_request_shovel, 
     [{sources,  [{broker,"amqp://test_user:[email protected]"}]}, 
     {destinations, [{broker, "amqp://test_user:[email protected]###-##-###-###.compute-1.amazonaws.com"}]}, 
     {queue, <<"scp_request">>}, 
     {ack_mode, on_confirm}, 
     {publish_properties, [{delivery_mode, 2}]}, 
     {publish_fields, [{exchange, <<"">>}, 
         {routing_key, <<"scp_request">>}]}, 
     {reconnect_delay, 5} 
     ]} 
     ] 
    }] 
}]. 

運行以下命令:

sudo rabbitmqctl eval 'rabbit_shovel_status:status().'

回報:

[{scrape_request_shovel,starting,{{2012,7,11},{23,38,47}}}]

根據This question,這可能會導致如果用戶還沒有正確設置的兩家券商。但是,我仔細檢查過我是否已經在兩臺機器上通過rabbitmqctl user_add正確設置了用戶 - 甚至可以用一組不同的用戶嘗試它。

我還在遠程主機上運行了端口5672的nmap掃描,以驗證是否已啓動並在該端口上運行。

UPDATE問題不解決,但這確實出現了與遠程服務器連接問題造成的。我在配置文件中將「reconnect_delay」更改爲0,以避免無限重試連接。強烈建議其他人也這樣做,因爲它可以讓你從rabbit_shovel_status中獲得錯誤信息。在我的情況下,我得到了以下錯誤:

[{scrape_request_shovel, 
    {terminated, 
     {{badmatch,{error,access_refused}}, 
     [{rabbit_shovel_worker,make_conn_and_chan,1}, 
      {rabbit_shovel_worker,handle_cast,2}, 
      {gen_server2,handle_msg,2}, 
      {proc_lib,init_p_do_apply,3}]}}, 
    {{2012,7,12},{0,4,37}}}] 

回答

5

在這裏回答我自己的問題,以防其他人遇到此問題。這個錯誤(如果你得到它,也是一個超時錯誤,{{badmatch,{error,etimedout}})幾乎肯定是兩臺機器之間的通信問題,很可能是由於端口訪問/防火牆設置。

有一對夫婦的愚蠢的事我在這裏做什麼:

1)使用了錯誤的DNS爲我遠程EC2實例爲(D'哦,是愚蠢的 - 不能告訴你多久,我呆了!把我的頭撞在牆上......)。請記住,如果您沒有與該實例關聯的彈性IP,則停止並啓動您的實例會生成一個新的DNS。

2)我的遠程實例是Windows服務器,我意識到你在windows防火牆和EC2安全組打開端口5672 - 有訪問控制的兩個重疊的層次這裏,開放如果您的計算機是EC2上的Windows服務器,則EC2管理控制檯中的端口不夠用,因爲您還必須配置Windows服務器防火牆。

+0

(2.7.1)另請參閱我的答案在這裏:http://stackoverflow.com/questions/11217902/rabbitmq-shovel-wont-start/12777303#12777303 – 2012-10-08 07:48:45