java - 訊息佇列處理臨界時間問題
phpcn_u1582
phpcn_u1582 2017-05-17 10:08:07
0
2
611

現在從訊息佇列接收訊息,然後寫入檔案。每小時寫一個,是大量寫入。但是出現個問題,每次寫的新文件開頭都有一些應該屬於上小時得數據,消息體有time。如何保證所有訊息都嚴格寫入自己小時得文件。現在想到的是將批次寫入的buffer按小時區分,Map<hour,buffer>,一個buffer對應一個小時,以buffer 對應的小時字段產生文件名,這樣就保證每個buffer 裡的數據都屬於自己的文件。還有其他更好的方法嗎?

phpcn_u1582
phpcn_u1582

全部回覆(2)
黄舟

檔案在小時整點生成,每個訊息都帶著各自的時間戳,匹配寫

我想大声告诉你

感覺你這個問題可能有以下幾個原因造成的:

  1. producer重複發送了訊息

  2. mq重複發送了訊息給consumer

  3. 前一小時consumer沒有告知mq已經消費訊息,導致後一個小時mq又發送了訊息

參考資料:

  1. duplicated-messages-on-activemq

  2. avoiding-duplicated-messages-on-jms-activemq

  3. duplicate-detection

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板