現在從訊息佇列接收訊息,然後寫入檔案。每小時寫一個,是大量寫入。但是出現個問題,每次寫的新文件開頭都有一些應該屬於上小時得數據,消息體有time。如何保證所有訊息都嚴格寫入自己小時得文件。現在想到的是將批次寫入的buffer按小時區分,Map<hour,buffer>,一個buffer對應一個小時,以buffer 對應的小時字段產生文件名,這樣就保證每個buffer 裡的數據都屬於自己的文件。還有其他更好的方法嗎?
檔案在小時整點生成,每個訊息都帶著各自的時間戳,匹配寫
感覺你這個問題可能有以下幾個原因造成的:
producer重複發送了訊息
mq重複發送了訊息給consumer
前一小時consumer沒有告知mq已經消費訊息,導致後一個小時mq又發送了訊息
參考資料:
duplicated-messages-on-activemq
avoiding-duplicated-messages-on-jms-activemq
duplicate-detection
檔案在小時整點生成,每個訊息都帶著各自的時間戳,匹配寫
感覺你這個問題可能有以下幾個原因造成的:
producer重複發送了訊息
mq重複發送了訊息給consumer
前一小時consumer沒有告知mq已經消費訊息,導致後一個小時mq又發送了訊息
參考資料:
duplicated-messages-on-activemq
avoiding-duplicated-messages-on-jms-activemq
duplicate-detection