java - 消息隊(duì)列處理臨界時(shí)間問題
問題描述
現(xiàn)在從消息隊(duì)列接收消息,然后寫入文件。每小時(shí)寫一個(gè),是批量寫入。但是出現(xiàn)個(gè)問題,每次寫的新文件開頭都有一些應(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ù)都屬于自己的文件。還有其他更好的方法嗎?
問題解答
回答1:文件在小時(shí)整點(diǎn)生成,每個(gè)消息都帶上各自的時(shí)間戳,匹配寫
回答2:感覺你這個(gè)問題可能有以下幾個(gè)原因造成的:
producer重復(fù)發(fā)送了消息
mq重復(fù)發(fā)送了消息給consumer
前一小時(shí)consumer沒有告知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. thinkphp3 count()方法必須加上字段?2. python中return 語句與 分支語句連用問題3. mysql 5個(gè)left關(guān)鍵 然后再用搜索條件 幾千條數(shù)據(jù)就會(huì)卡,如何解決呢4. python - angular route 與 django urls 沖突怎么解決?5. 這是什么情況???6. 微信內(nèi)網(wǎng)頁上傳圖片問題7. 非root安裝MySQL5.6報(bào)錯(cuò),求助!!!8. 輸入地址報(bào)以下截圖錯(cuò)誤,怎么辦?9. node.js - nodejs中mysql子查詢返回多行結(jié)果怎么處理?10. mysql - 瞬間流量很高的網(wǎng)站,要頻繁的插入數(shù)據(jù)到數(shù)據(jù)庫,應(yīng)該怎么解決這個(gè)問題?
