5
RabbitMQ使用一個非負長整數(63位整數,因爲只有非負數)稱爲遞送標籤,用於存儲通過通道發送的郵件數量。如果您通過頻道發送(2^63)+1條消息,會發生什麼情況?當RabbitMQ的交付標籤溢出時會發生什麼?
RabbitMQ使用一個非負長整數(63位整數,因爲只有非負數)稱爲遞送標籤,用於存儲通過通道發送的郵件數量。如果您通過頻道發送(2^63)+1條消息,會發生什麼情況?當RabbitMQ的交付標籤溢出時會發生什麼?
根據我的餐後計算,假設爲maximum publish rate of 53,710 messages per second,您必須發佈總共7.06 x 10^13年,比已知宇宙年齡大4個數量級。如果我們假設每個處理器週期可以發佈3條消息,並且英特爾處理器每秒可以處理7,000,000,000條消息,則仍然需要近84年的時間。
因此,可以斷定您會首先遇到其他問題。但是,如果您的RabbitMQ服務器能夠長時間保持運行狀態,那麼您應該獲得獎勵。
但是,如果發生這種情況,我認爲這取決於Erlang如何處理整數。 This post表示Erlang將耗盡內存 - 我不完全明白他們是如何完成的,但是也許整個系統會崩潰?誰知道。在c#中,整數簡單地在overflow後滾動。
是的,我知道這不會發送這麼多的消息。我對如果你想要發生什麼感興趣。雖然我們都能想象會發生什麼,但我正在尋找是否有人已經知道或可以指出我的參考。 –
鑑於您對問題的定義,不可能「不可能」 - 不可能。但是,我確實嘗試在我的答案的第二部分中進行理論化:)可能會設置一個測試,其中整數值被故意設置爲(MaxValue-1)或某種東西,儘管我認爲它會是學術演習。 – theMayer