Я выполняю некоторые массовые записи в файл .csv, используя Groovy. Точнее говоря, у меня запущено задание Quartz, и я создаю несколько сообщений Map, которые отправляются в очередь RabbitMQ. Очередь используется 10 потребителями, и в результате получается несколько списков строк. Для каждого элемента в Списке я просто записываю его в файл .csv, разделенный конвейером. Фактическая служба, у которой есть метод, который записывает в файл .csv, является стандартной (одноэлементной) транзакционной службой grails. Когда я записываю строки для записи, все нормально, но в файле некоторые строки «разбиты». Я пишу так:
def writeRowsToFile(List<String> rows, File file) {
rows.each {row->
file.append("${row}\n")
}
}
Изначально я использовал:
file.withWriterAppend {out->
out.write(row.toString())
out.newLine()
}
и получил тоже самое ...
Если бы это было что-то не так, он потерпел бы неудачу для всех строк. Может ли это быть какое-то состояние гонки, параллелизм или я не знаю, что еще проблема?
Любая помощь будет оценена.
Спасибо