java - 消息隊(duì)列處理臨界時(shí)間問(wèn)題
問(wèn)題描述
現(xiàn)在從消息隊(duì)列接收消息,然后寫入文件。每小時(shí)寫一個(gè),是批量寫入。但是出現(xiàn)個(gè)問(wèn)題,每次寫的新文件開(kāi)頭都有一些應(yīng)該屬于上個(gè)小時(shí)得數(shù)據(jù),消息體有time。如何保證所有消息都嚴(yán)格寫入自己小時(shí)得文件。現(xiàn)在想到的是將批量寫入的buffer按小時(shí)區(qū)分,Map<hour,buffer>,一個(gè)buffer對(duì)應(yīng)一個(gè)小時(shí),以buffer 對(duì)應(yīng)的小時(shí)字段生成文件名,這樣就保證每個(gè)buffer 里的數(shù)據(jù)都屬于自己的文件。還有其他更好的方法嗎?
問(wèn)題解答
回答1:文件在小時(shí)整點(diǎn)生成,每個(gè)消息都帶上各自的時(shí)間戳,匹配寫
回答2:感覺(jué)你這個(gè)問(wèn)題可能有以下幾個(gè)原因造成的:
producer重復(fù)發(fā)送了消息
mq重復(fù)發(fā)送了消息給consumer
前一小時(shí)consumer沒(méi)有告知mq已經(jīng)消費(fèi)消息,導(dǎo)致后一個(gè)小時(shí)mq又發(fā)送了消息
參考資料:
duplicated-messages-on-activemq
avoiding-duplicated-messages-on-jms-activemq
duplicate-detection
相關(guān)文章:
1. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????2. html5和Flash對(duì)抗是什么情況?3. docker 17.03 怎么配置 registry mirror ?4. html5 - datatables 加載不出來(lái)數(shù)據(jù)。5. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?6. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法7. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]8. javascript - QQ第三方登錄的問(wèn)題9. spring-mvc - spring-session-redis HttpSessionListener失效10. javascript - 在 model里定義的 引用表模型時(shí),model為undefined。

網(wǎng)公網(wǎng)安備