搜尋

首頁  >  問答  >  主體

java - 訊息佇列處理臨界時間問題

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

phpcn_u1582phpcn_u15822786 天前623

全部回覆(2)我來回復

  • 黄舟

    黄舟2017-05-17 10:10:07

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

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-17 10:10:07

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

    1. producer重複發送了訊息

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

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

    參考資料:

    1. duplicated-messages-on-activemq

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

    3. duplicate-detection

    回覆
    0
  • 取消回覆