2013-03-21 140 views
1

所以我在一個集羣rabbitmq後端的多臺服務器上運行芹菜。近日,什麼我芹菜做已經開始無限期地掛起,並檢查記錄,對RabbitMQ的爲我提供了這個令人費解的錯誤消息:我該如何解決這個rabbitmq /芹菜錯誤?

=ERROR REPORT==== 20-Mar-2013::23:52:25 === 
connection <0.15823.3>, channel 1 - soft error: 
{amqp_error,not_found, 
     "no binding i-69995906 between exchange 'i-69995906' in vhost 'celery' and queue 'i-69995906' in vhost 'celery'", 
     'queue.bind'} 

運行rabbitmqctl list_bindings給了我這樣的:

# rabbitmqctl list_bindings -p celery 
Listing bindings ... 
     exchange celery queue celery [] 
celery exchange celery queue celery [] 
...done. 

什麼我需要做什麼來擺脫錯誤?我已經重新啓動了Rabbitmq,重新安裝了Rabbitmq,並刪除並恢復了羣集。我猜我需要恢復先前存在的綁定,但我不知道如何從rabbitmqctl或芹菜。如果這不起作用,我的芹菜任務都不起作用。

回答

3

感謝您的提問。我結束了在完全相同的地方。

我能夠通過刪除虛擬主機,並重新創建

rabbitmqctl delete_vhost celery 
rabbitmqctl add_vhost celery 
rabbitmqctl set_permissions -p celery <user> ".*" ".*" ".*" 
1

我也有過這樣的錯誤,解決它的唯一的方式來解決這個問題是要關閉整個集羣一次,讓它關閉幾秒鐘。

前言: 我們確實遇到一些分區之前並沒有能夠推到一個隊列,也無法重新綁定,並得到了同樣的錯誤,你。

停止並逐個啓動不起作用。錯誤依然存在,我假設羣集的某個節點確實緩存了一些錯誤的ip/config。

檢測: 確定這是否是錯誤的好方法是在所有節點上運行rabbitmqctl list_queues。如果節點顯示不同的隊列,則出現問題。

解決方案: 正如所述解決方案是停止所有兔子服務器幾秒鐘,所以沒有「緩存」。當然,這只是你不依賴永久隊列的解決方案。

1

我有同樣的問題,並能夠修復它,而無需關閉羣集或重置虛擬主機。

我有一個隊列中綁定了3個路由鍵。我不得不在1個節點關閉時刪除隊列,之後我總是在嘗試在新創建的同名隊列中再次註冊路由密鑰時遇到「虛擬主機和隊列之間的交換沒有綁定」錯誤。

原來的隊列被作爲「耐用」和解決方案創建是:

  • 刪除隊列
  • 具有相同的名稱創建一個新的隊列中,但「短暫」(非持久)
  • 在隊列中註冊原來的3個路由密鑰,它會停止引發錯誤。

因爲我想要一個持久隊列,我再次刪除隊列,創建一個具有相同名稱的新「Durable」隊列,然後綁定路由鍵完美工作。

也許通過創建具有不同「耐久性」類型的新隊列,確實重置了仍然存在於某處的舊綁定。

相關問題