W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
以下簡化圖顯示了RabbitMQ綁定程序的工作方式:
圖41.1。RabbitMQ Binder
默認(rèn)情況下,RabbitMQ Binder實現(xiàn)將每個目的地映射到TopicExchange
。對于每個消費者組,Queue
綁定到該TopicExchange
。每個使用者實例為其組的Queue
有一個對應(yīng)的RabbitMQ Consumer
實例。對于分區(qū)的生產(chǎn)者和使用者,隊列帶有分區(qū)索引后綴,并將分區(qū)索引用作路由鍵。對于匿名使用者(沒有group
屬性的使用者),將使用自動刪除隊列(具有隨機(jī)唯一名稱)。
通過使用可選的autoBindDlq
選項,您可以配置活頁夾以創(chuàng)建和配置死信隊列(DLQ)(以及死信交換機(jī)DLX
,以及路由基礎(chǔ)結(jié)構(gòu))。默認(rèn)情況下,死信隊列具有目標(biāo)名稱,后跟.dlq
。如果啟用了重試(maxAttempts > 1
),則在重試用盡后,失敗的消息將傳遞到DLQ。如果禁用了重試(maxAttempts = 1
),則應(yīng)將requeueRejected
設(shè)置為false
(默認(rèn)值),以便將失敗的消息路由到DLQ,而不是重新排隊。此外,republishToDlq
使綁定程序?qū)⑹〉南l(fā)布到DLQ(而不是拒絕它)。通過此功能,可以將其他信息(例如x-exception-stacktrace
標(biāo)頭中的堆棧跟蹤)添加到標(biāo)頭中的消息中。此選項不需要啟用重試。您只需嘗試一次即可重新發(fā)布失敗的消息。從1.2版開始,您可以配置重新發(fā)布郵件的傳遞模式。請參閱republishDeliveryMode
屬性。
將requeueRejected
設(shè)置為true
(與republishToDlq=false
一起使用)會導(dǎo)致消息被重新排隊并連續(xù)重新發(fā)送,除非失敗的原因是短暫的,否則這可能不是您想要的。通常,應(yīng)通過將maxAttempts
設(shè)置為大于1或?qū)?code>republishToDlq設(shè)置為true
在活頁夾中啟用重試。
有關(guān)這些屬性的更多信息,請參見“ RabbitMQ Binder Properties”。
該框架沒有提供任何標(biāo)準(zhǔn)機(jī)制來使用死信消息(或?qū)⑵渲匦侣酚苫刂麝犃校?/font>“ Dead-Letter隊列處理”中介紹了一些選項。
在Spring Cloud Stream應(yīng)用程序中使用多個RabbitMQ活頁夾時,重要的是禁用'RabbitAutoConfiguration'以避免將來自
RabbitAutoConfiguration
的相同配置應(yīng)用于兩個活頁夾。您可以使用@SpringBootApplication
批注來排除該類。
從版本2.0開始,RabbitMessageChannelBinder
將RabbitTemplate.userPublisherConnection
屬性設(shè)置為true
,以便非事務(wù)生成器避免對使用者的死鎖,如果由于代理上的內(nèi)存警報而阻止了緩存的連接,則可能發(fā)生死鎖。
當(dāng)前,
multiplex
使用者(一個使用者正在監(jiān)聽多個隊列)僅受消息驅(qū)動的使用者支持;被輪詢的使用者只能從單個隊列中檢索消息。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: