1. 程式人生 > >rabbitmq中已經定義過的非持久化佇列再次定義為持久化佇列報錯問題

rabbitmq中已經定義過的非持久化佇列再次定義為持久化佇列報錯問題

rabbitmq中已經定義過的非持久化佇列再次定義為持久化佇列會報如下錯誤

Exception in thread "main" java.io.IOException
	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
	at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
	at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:844)
	at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:61)
	at com.aitongyi.rabbitmq.queues.NewTask.main(NewTask.java:32)
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10)
	at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
	at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
	at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
	at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
	at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
	... 3 more
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10)
	at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:484)
	at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:321)
	at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
	at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
	at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:556)
	at java.lang.Thread.run(Thread.java:744)


這是因為已經定義的佇列,再次定義是無效的,這就是冪次原理。RabbitMQ不允許重新定義一個已有的佇列資訊,也就是說不允許修改已經存在的佇列的引數。如果你非要這樣做,只會返回異常。

相關推薦

java.lang.IllegalArgumentException (實體存在基本資料型別,將實體轉換Object時會)

java.lang.IllegalArgumentException     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect

rabbitmq已經定義持久化佇列再次定義持久化佇列問題

rabbitmq中已經定義過的非持久化佇列再次定義為持久化佇列會報如下錯誤 Exception in thread "main" java.io.IOException at com.rabbitmq.client.impl.AMQChannel.wrap(AMQCha

在SSH框架,多個持久層物件相互引用,從而引發分頁查詢,查詢所得的持久化物件轉換JSON字串的原因及解決方案

引言: 使用EasyUI框架的小夥伴們都知道,在使用datagrid(資料表格)時,會傳入如一個URL,用於請求資料表格中的所顯示的資料: <!--建立一個空表格--> <table id="mytable"></table>

MySQL查詢時"Lost connection to MySQL server during query"的解決方案

解決 lose tool 查詢 不用 resolv 原因 網上 技術 一、問題描述: mysql數據庫查詢時,遇到下面的報錯信息: 二、原因分析: dw_user 表數據量比較大,直接查詢速度慢,容易"卡死",導致數據庫自動連接超時.... 三、解決辦法: 方案1.在my

多線程,ResultSet空,空指針

resultset JD 沖突 查詢語句 查詢 多個 通過 res 好的 最近在數據庫查詢數據時,由於數據量太大,使用了多線程,通過線程池建了好幾個線程,然後調用了一個封裝好的jdbc查詢語句。 結果在多線程中,ResultSet報錯空指針。 仔細查閱後,才發現多個線程訪問

定義項目啟動初始化信息的listener

servle eve 如果 cep lis private 定義 順序 web.xml 自定義初始化組件代碼如下: @Component public class InitComponent implements ServletContextListener, Appli

在 ASP.NET Core 傳送郵件遇到的坑_學習筆記 使用GB2312編碼的問題.

功能需求         因為專案需要有個忘記密碼驗證郵箱再重新修改密碼的功能,然後我選用了很簡單的一個方案,通過驗證登入使用者的郵箱然後傳送郵件,通過這個郵件傳送的連結地址來最後實現密碼修改的小功能。 專案環境及實現  &

mysql modify和change區別(以及使用modify修改欄位名稱)

使用modify修改欄位報錯如下: mysql> alter table student modify name sname char(16);ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that

專案已經引用了相關的jar包,但是啟動還是,是因為伺服器沒把jar包考進lib目錄下

筆者在搭建Spring開發環境的時候,發現丟擲如下異常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 很明顯是 ContextLoaderLis

在JSP引入不了標籤庫,但是標籤庫存在,卻依舊Can not find the tag library descriptor for ......

在JSP中引入不了標籤庫,但是標籤庫存在,卻依舊報錯Can not find the tag library descriptor for …… 在這種情況下只需引入 standard.jar 或

Pycharm不支持中文編碼的解決方案。Pycharm中文。 Pycharm出現的部分快捷鍵無效及解決辦法

androi bubuko mage sdn track 找到 code sso pos Pycharm中不支持中文編碼的解決方案。Pycharm中文報錯。 1. 打開Pycharm ----> File ----> Default se

JSPWebContent和WEB-INF下網頁的路徑問題和404

我們通過做專案,都會把jsp網頁放在WebContent目錄下,而不是WEB-INF下,因為大家都知道WEB-INF下的jsp頁面訪問會報404錯誤。 後來,學習了jsp+servlet技術,老師說以後做專案為了安全起見,可以把頁面放入WEB-INF目錄下,因為WEB-IN

在eclipse新建dubbo專案的時候引入dubbo的配置xml檔案問題

    專案引入Dubbo之後,XML檔案報錯:  Multiple annotations found at this line: - cvc-complex-type.2.4.c: The m

eclipse新增外掛的時候經常會遇到 讀取不到的情況Unable to read repository at http:

解決方案:1.刪除eclipse下面的快取資料夾及檔案  \eclipse\p2\org.eclipse.equinox.p2.repository\cache2.進入eclipse中Preferenc

關於JAVAByte數據類型二進制賦值運算問題

新手 pan 更新 can ava 結果 報錯 span 類型 自從JDK7更新之後,新增了二進制變量的表示,支持將整數類型用二進制來表示,用0b開頭; 例如: byte b= (byte) 0b0000_0001; short s

Hive面試題:請寫出你在工作定義的udf函式,簡述定義步驟

步驟: 1.extends UDF,實現evaluate() 2.add JAR /home/hadoop/hivejar/udf.jar; 3.create temporary function tolowercase as 'com.ghgj.hive.udf.ToLowerCa

如何在Eclipse/Myeclipse/Scala IDEA for Eclipse 正確刪除已經下載的外掛(圖文詳解)

  不多說,直接上乾貨!   見 第一步 :在選單欄中,找到help-------install new software  第二步,需要注意了,注意看圖。紅色區域標註的already installed?  點選進去,找到你需要要刪除的軟體,

RabbitMQ學習筆記七:交換機、佇列、訊息的持久化

一、概述     在生產過程中,難免會發生伺服器宕機的事情,RabbitMQ也不例外,可能由於某種特殊情況下的異常而導致RabbitMQ宕機從而重啟,那麼這個時候對於訊息佇列裡的資料,包括交換機、佇列以及佇列中存在訊息恢復就顯得尤為重要了。RabbitMQ本身帶有持久化機制

C++已經在 test.obj 定義”的錯誤

在使用模板過程中,容易發生這樣的錯誤。 錯誤原因如下: 1.模板類的申明和實現要在一個檔案裡面。當我們所有實現都是用模板時,我們會知道應該放在一個檔案裡面,不會範錯誤。但如果有的用了模板,而有的沒用模板的時候,這個時候就容易出現問題了。如果把申明放在.h,實現在

RabbitMQ佇列與訊息的持久化

 import com.rabbitmq.client.ConnectionFactory; 2 import com.rabbitmq.client.Connection; 3 import com.rabbitmq.client.Channel; 4 import com.rabbitmq.client.