次に、メッセージ キューからメッセージを受信し、ファイルに書き込みます。 1 時間ごとに 1 つ書き込みます。これはバッチ書き込みです。しかし問題があり、新しいファイルが書き込まれるたびに、前の 1 時間に属するはずのデータが先頭に存在し、メッセージ本文には時間が含まれます。すべてのメッセージが厳密に自分のファイルに書き込まれることを保証する方法。私が今考えているのは、バッチで書き込まれたバッファを時間ごとに分割し、Map、1 つのバッファが 1 時間に対応し、ファイル名がバッファに対応する時間フィールドに基づいて生成されることです。各バッファ内のデータがそれ自体に属することを確認します。他に良い方法はありますか?
ファイルは正時に生成され、各メッセージには書き込み内容に一致する独自のタイムスタンプが付けられます
あなたの問題は次の理由によって引き起こされていると思われます:
プロデューサーは繰り返しメッセージを送信しました
mq が消費者にメッセージを繰り返し送信しました
コンシューマは 1 時間前にメッセージを消費したことを mq に通知しなかったため、mq は次の 1 時間に別のメッセージを送信することになりました
参考:
activemq 上の重複メッセージ
jms-activemq での重複メッセージの回避
重複検出
ファイルは正時に生成され、各メッセージには書き込み内容に一致する独自のタイムスタンプが付けられます
あなたの問題は次の理由によって引き起こされていると思われます:
プロデューサーは繰り返しメッセージを送信しました
mq が消費者にメッセージを繰り返し送信しました
コンシューマは 1 時間前にメッセージを消費したことを mq に通知しなかったため、mq は次の 1 時間に別のメッセージを送信することになりました
参考:
activemq 上の重複メッセージ
jms-activemq での重複メッセージの回避
重複検出