java - 消息隊(duì)列處理臨界時(shí)間問(wèn)題
問(wèn)題描述
現(xiàn)在從消息隊(duì)列接收消息,然后寫(xiě)入文件。每小時(shí)寫(xiě)一個(gè),是批量寫(xiě)入。但是出現(xiàn)個(gè)問(wèn)題,每次寫(xiě)的新文件開(kāi)頭都有一些應(yīng)該屬于上個(gè)小時(shí)得數(shù)據(jù),消息體有time。如何保證所有消息都嚴(yán)格寫(xiě)入自己小時(shí)得文件。現(xiàn)在想到的是將批量寫(xiě)入的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í)間戳,匹配寫(xiě)
回答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. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””2. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?3. nignx - docker內(nèi)nginx 80端口被占用4. docker容器呢SSH為什么連不通呢?5. mac里的docker如何命令行開(kāi)啟呢?6. 關(guān)于docker下的nginx壓力測(cè)試7. 如何解決Centos下Docker服務(wù)啟動(dòng)無(wú)響應(yīng),且輸入docker命令無(wú)響應(yīng)?8. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????9. docker start -a dockername 老是卡住,什么情況?10. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問(wèn)題。

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