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?
文件在小时整点生成,每个消息都带上各自的时间戳,匹配写
感觉你这个问题可能有以下几个原因造成的:
producer重复发送了消息
mq重复发送了消息给consumer
前一小时consumer没有告知mq已经消费消息,导致后一个小时mq又发送了消息
参考资料:
duplicated-messages-on-activemq
avoiding-duplicated-messages-on-jms-activemq
duplicate-detection