Heim  >  Fragen und Antworten  >  Hauptteil

Java – Problem mit kritischer Zeit bei der Verarbeitung der Nachrichtenwarteschlange

Empfangen Sie nun Nachrichten aus der Nachrichtenwarteschlange und schreiben Sie sie dann in eine Datei. Schreiben Sie jede Stunde einen, was einem Batch-Schreibvorgang entspricht. Aber jedes Mal, wenn eine neue Datei geschrieben wird, gibt es am Anfang einige Daten, die zur vorherigen Stunde gehören sollten, und der Nachrichtentext hat Zeit. So stellen Sie sicher, dass alle Nachrichten ausschließlich in Ihre eigenen Dateien geschrieben werden. Was mir jetzt einfällt, ist, die in Stapel geschriebenen Puffer nach Stunden aufzuteilen, Map<hour,buffer>, ein Puffer entspricht einer Stunde und der Dateiname wird basierend auf dem Stundenfeld generiert, das dem Puffer entspricht Die Daten in jedem Puffer gehören zu sich selbst. Gibt es einen anderen besseren Weg?

phpcn_u1582phpcn_u15822734 Tage vor574

Antworte allen(2)Ich werde antworten

  • 黄舟

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

    文件在小时整点生成,每个消息都带上各自的时间戳,匹配写

    Antwort
    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

    Antwort
    0
  • StornierenAntwort