rabbitmq隊列的exclusive,durability,auto-delete屬性以及消息可靠傳輸設計

非集群下,簡單的說:
- 如果是excl,則設置durability沒有意義,因為不管服務器掛了還是客戶端主動/被動斷開了,隊列都會自動刪除。
- auto-delete,其實可簡單的認為是同理,即使非excl,則無論是服務器掛了還是全部消費者斷開了,隊列都會刪除。
集群下:
這還真得測試如下:
1、A服務器掛了,客戶端連接從A自動切換到B之后(即使配置了多個,任何時候MQ仍然只是連接到一個),MQ服務器是否認為仍然是原來的消費者?從理論上來說,應該是要認為相同的,不然就失去了集群的意義。
2、服務不是在客戶端設置多個地址,而是通過haproxy進來的(不過一般大規模來說,應該使用TCP負載均衡器,小規模可能運維考慮不用),此時又是什么樣的含義。

關于可靠傳輸,發布、訂閱端發送后沒有收到ack/confirm時的業務狀態一致性判斷問題,通常來說靠協議自身去實現100%可靠性是很難的(總要有補償機制兜底),主要要應用層去如何設計以最小化開發/維護/運行時成本的處理。

ACK:消費者->RabbitMQ的消息處理確認
confirm:RabbitMQ->發布者的消息收到確認(AMQP標準里面用事務,太重量級)

ACK+confirm+persistent是確保消息可信到達唯一條件,即使如此,仍然有可能存在鏈路上的問題。如下:
publish,未收到confirm客戶端掛了,服務器已成 業務可重復執行(尤其是如果生產者是整個鏈路的中間環節)
publish,未收到confirm服務器掛了,服務器已成 業務可重復執行(尤其是如果生產者是整個鏈路的中間環節)
publish,未收到confirm客戶端掛了,服務器未成 無需處理,理論上不可能發生
publish,未收到confirm服務器掛了,服務器未成 客戶端處理異常

consume,未收到ack客戶端掛了,客戶端已成 業務可重復執行(尤其是如果消費者是整個鏈路的中間環節)
consume,未收到ack服務器掛了,客戶端已成 業務可重復執行(尤其是如果消費者是整個鏈路的中間環節)
consume,未收到ack客戶端掛了,客戶端未成 無需處理,服務端自動重發
consume,未收到ack服務器掛了,客戶端未成 無需處理,理論上不可能發生
同時要考慮集群下是否完全一致。

轉載于:https://www.cnblogs.com/zhjh256/p/6438656.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253345.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253345.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253345.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IIC 總線接口詳細介紹

1. 概述 IIC Inter Integrated-Circuit 總線是PHLIPS公司推出的一種串行總線,是具備多主機系統所需的包括總線裁決和高低速器件同步功能的高性能串行總線,它支持多主控(multimastering),其中任何能夠進行發送和接收的設備都可以成為主總線。…

DMA數據傳輸過程

DMA方式具有如下特點:1、 外部設備的輸入輸出請求直接發給主儲存器。主存儲器既可以被CPU訪問,也可以被外圍設備訪問。因此,在主存儲器中通常要有一個存儲管理部件來為各種訪問主存儲器的申請排隊,一般計算機系統把外圍設備的訪問…

Android JNI開發系列(二)HelloWorld

2019獨角獸企業重金招聘Python工程師標準>>> 入門HelloWorld 新建項目 Configure your new project部分選中 Include C Support 復選框 Next 正常填寫所有其他字段并完成向導接下來幾個部分 在向導的Customize C Support 部分,您可以使用謝列選項自定…

sublime text3安裝js提示的插件

今天安裝Sublime Text3的js插件,在網上查了很多資料,為了方便以后看,寫一個安裝插件的總結和方法。 要安裝js相關的插件,就要先安裝一個Package Control(插件管理器)的插件,通過這個插件再去安裝…

SPI接口詳細介紹

1. 概述 SPI Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規只占用四根線,節約了芯片管腳,PCB的布局省空間。現在越來越多的芯片集成了這種通信協議&#xff0…

駐扎博客園

今天把之前hexo里的一些文章全部轉移到博客園了,之后就在博客園寫點東西,記錄一些生活的瑣事。為什么要移至博客園呢?其實很簡單,這邊可以和一些同意從事前端的小伙伴一起互動。技術還是需要多討論的,希望之后能多更新…

H.264 Profile、Level、Encoder三張簡圖

H.264有四種畫質級別,分別是BP、EP、MP、HP: 1、BP-Baseline Profile:基本畫質。支持I/P 幀,只支持無交錯(Progressive)和CAVLC;   2、EP-Extended profile:進階畫質。支持I/P/B/SP/SI 幀&…

require.js學習記錄

1、簡介 官方對requirejs的描述:RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will impro…

iOS-AFNetworking參數和多文件同時上傳【多文件上傳】

1. 前言 在項目開發中,我們經常需要上傳文件,例如:上傳圖片,上傳各種文件,而有時也需要將參數和多個文件一起上傳,不知道大家的項目中遇到了沒有,我在最近的項目中,就需要這樣的一個…

智能音箱 之 平臺方案簡介

智能音箱,被認為是物聯網時代的入口,在去年成為了各大廠商爭相投入的風口。在當今互聯網時代,它不僅僅是一臺單純的音樂播放器,在其背后支撐的 AI 技術才是整個產品的核心,也是各大公司覬覦物聯網入口的最根本原因。經…

Linux Kconfig及Makefile學習

內核源碼樹的目錄下都有兩個文檔 Kconfig (2.4版本是Config.in)和Makefile。分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫,每個Kconfig分別描述了 所屬目錄源文檔相關的內核配置菜單。在內核配置make menuconfig時,從K…

Linux編程 23 shell編程(結構化條件判斷 命令if -then , if-then ... elif-then ...else,if test)...

一.概述 在上一篇里講到了shell腳本,shell按照命令在腳本中出現的順序依次進行處理,對于順序操作已經足夠了,但許多程序要求對shell腳本中的命令加入一些邏輯流程控制,這樣的命令通常叫做 結構化命令。 1.1 使用if - then語句 --最…

Scala-Spark digamma stackoverflow問題

這兩天在用spark做點擊率的貝葉斯平滑,參考雅虎的論文進行了一番嘗試。 先上代碼: 1 # click_count, show_count # this method takes time2 def do_smooth(data_list):3 import scipy.special as sp4 a, b, i 1.0, 1.0, 05 da, db a, b6 …

IIS接口詳細介紹

1. 概述 I2S Inter-IC Sound Integrated Interchip Sound IIS,是飛利浦在1986年定義(1996年修訂)的數字音頻傳輸標準,用于數字音頻數據在系統內器件之間傳輸,例如編解碼器CODEC、DSP、數字輸入/輸出接口、ADC、DAC…

UVA - 10934 Dropping water balloons(裝滿水的氣球)(dp)

題意:有k個氣球,n層樓,求出至少需要多少次實驗能確定氣球的硬度。氣球不會被實驗所“磨損”。 分析: 1、dp[i][j]表示第i個氣球,測試j次所能確定的最高樓層。 2、假設第i-1個氣球測試j-1次所確定的最高樓層是a, 若第i個…

繼承進階

先講一個例子&#xff1a; #老師有生日&#xff0c;怎么組合哪&#xff1f; class Birthday: # 生日def __init__(self,year,month,day):self.year yearself.month monthself.day dayclass Teacher: # 老師<br>def __init__(self,name,birth):self.name nameself.b…

PCM接口詳細介紹--TDM方式

1. 概述 PCM = Pulse Code Modulation 是通過等時間隔(即采樣率時鐘周期)采樣將模擬信號數字化的方法。圖為4 bit 采樣深度的PCM數據量化示意圖: PCM數字音頻接口,說明接口傳輸的音頻數據是通過PCM方式采樣得到的,區別于PDM形式;IIS傳輸的也是PCM類型數據,屬于其一個特…

網站同源策略

所謂"同源"指的是"三個相同"&#xff1a;協議&#xff0c;域名&#xff0c;端口。 舉例來說&#xff0c;http://www.example.com/dir/page.html這個網址&#xff0c;協議是http://&#xff0c;域名是www.example.com&#xff0c;端口是80&#xff08;默認端…

Kconfig文件結構(圖文)簡介

1 Kconfig和Makefile 毫不夸張地說&#xff0c;Kconfig和Makefile是我們瀏覽內核代碼時最為依仗的兩個文件。基本上&#xff0c;Linux 內核中每一個目錄下邊都會有一個Kconfig文件和一個Makefile文件。Kconfig和Makefile就好似一個城市的地圖&#xff0c;地圖引導我們去 認識一…

PDM接口介紹

1. 概述 PDM Pulse Density Modulation是一種用數字信號表示模擬信號的調制方法。 PDM則使用遠高于PCM采樣率的時鐘采樣調制模擬分量&#xff0c;只有1位輸出&#xff0c;要么為0&#xff0c;要么為1。因此通過PDM方式表示的數字音頻也被稱為Oversampled 1-bit Audio。相比P…