CentOS 阿里云 RabbitMQ 創(chuàng)建交換機(jī)報(bào)錯(cuò)

阿里云 RabbitMQ 創(chuàng)建交換機(jī)報(bào)錯(cuò)

1. 報(bào)錯(cuò)信息

  • RabbitMQ.Client.Exceptions.OperationInterruptedException:“The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=503, text='COMMAND_INVALID - invalid exchange type 'black'', classId=40, methodId=10”
QQ截圖20230301104234.png

解決

1. 阿里云后臺(tái)解決

2. 本地解決

  • 我是阿里云服務(wù)器自己搭建的RabbitMQ ,所以不存在這個(gè)問(wèn)題,授權(quán)主體肯定也沒(méi)有,繼續(xù)觀(guān)察代碼
//錯(cuò)誤寫(xiě)法
 string typeName = "black";
// 正確寫(xiě)法
string exchangeName ="rinaExchange1";
 string typeName = "fanout";
channel.ExchangeDeclare(exchange: exchangeName, type: typeName);
  • 交換機(jī)類(lèi)型名字不能亂寫(xiě),改一下就成功


    QQ截圖20230301112936.png
QQ截圖20230301111625.png
  • 在RabbitMQ的Exchange模式中生產(chǎn)者并不會(huì)直接把消息發(fā)送到Queue中,而是將消息發(fā)送到Exchange(交換機(jī)),消費(fèi)者創(chuàng)建各自的隊(duì)列綁定到交換機(jī).


    QQ截圖20230301112344.png
  • 然后聲明消息隊(duì)列并對(duì)交換機(jī)進(jìn)行綁定,在這里使用了隨機(jī)數(shù),目的是聲明不重復(fù)的消息隊(duì)列,如果是同一個(gè)消息隊(duì)列,則就變成worker模式,也就是說(shuō)對(duì)于發(fā)布訂閱模式有多少接收者就有多少個(gè)消息隊(duì)列,而這些消息隊(duì)列共同從一個(gè)交換機(jī)中獲取數(shù)據(jù)
    然后同時(shí)開(kāi)兩個(gè)接收者,結(jié)果就如下

明細(xì)

QQ截圖20230301113340.png
  • 交換機(jī)發(fā)送一條消息,下面兩個(gè)綁定的隊(duì)列(消費(fèi)者)會(huì)同時(shí)收到


    QQ截圖20230301182515.png

Exchange 模式

1. 模式種類(lèi)

名稱(chēng) 說(shuō)明 備注
direct 路由模式 路由模式下,在發(fā)布消息時(shí)指定不同的routeKey,交換機(jī)會(huì)根據(jù)不同的routeKey分發(fā)消息到不同的隊(duì)列中
fanout 發(fā)布訂閱模式 發(fā)布消息時(shí)把交換機(jī)名稱(chēng)告訴RabbitMQ,把交換機(jī)設(shè)置成fanout發(fā)布訂閱模式
topic 通配符模式 通配符模式和路由模式其實(shí)差不多,不同于配符模式中的路由可以聲明為模糊查詢(xún).符號(hào)“#”匹配一個(gè)或多個(gè)詞.符號(hào)“”匹配一個(gè)詞。RabbitMQ中通配符的通配符是用"."來(lái)分割字符串的.比如a.只能匹配到a.b,a.c,而a.#可以匹配到a.a.c,a.a.b.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容