rabbitmq系列問題解決:406, "PRECONDITION_FAILED - inequivalent arg 'durable'


  1. 安裝rabbitmq,查看官網文檔: https://www.rabbitmq.com/#getstarted

  由於我是先安裝了rabbitmq后自己隨手創建了queue,后面又按照官方給的"hello world"例子去測試,結果發生了“406, "PRECONDITION_FAILED - inequivalent arg 'durable'” 這個錯誤信息。

  1. 先在管理頁面創建的queue

  

 

 

 

2. 創建的exchanges

  

 

 

 

   上圖中紅線的 durable 是指是否持久化,可以看到我創建時設置的為true。

  3. 官方的hello world 例子:

             官網文檔地址:https://www.rabbitmq.com/tutorials/tutorial-one-python.html

  代碼(python版本):

   (生產者)

 

 

  (消費者)

 

 

但是當我運行上面的代碼時,卻報錯:

  

 

   錯誤信息翻譯過來大致意思就是:當前的queue的durable屬性是true,但是我們聲明queue時過去的參數確實是false.

 這個錯誤造成的原因是現在頁面創建了queue和exchanges,但是代碼中聲明要使用的queue時,durable屬性傳遞的是false.

 ok,那么代碼怎么搞了? 可以從pyhton錯誤信息的中的堆棧部分找到返回錯誤的文件:File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pika/adapters/blocking_connection.py"

  那么找到這個文件,看看源碼是什么情況:

  

 

 

   可以看出來,這個函數里默認durable為false,那么我們將自己的代碼改造一下,設置durable為true.

  

 

 執行結果:

  

 

 可以看到是成功了的。

要注意的是,生產者和消費者對queue的聲明函數里,這個durable必須保持一致。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM