У меня есть этот верблюжий маршрут с приложением springboot
from(qn)
.unmarshal(xmlDataFormat) //Unmarshall message to Java Object
.process(locationProcessor) //Process the message and creates the location object if it's valid Plant
.choice()
.when(header("validMLMLocation").endsWith("yes")) //do it if location is valid only
.marshall(locationMarshProcessor)
.to("file:"+env.getProperty("location.file.path") + "?fileName=location-${header.binloc}-" + new Date().getTime() +".xml")
.otherwise()
.log(LoggingLevel.INFO,logger, "~~~ location is invalid")
.end();
Я получаю местоположения в сообщениях MQ, отправляю их в класс Java, а затем обрабатываю объект сообщения. если он действителен, я создаю объект LOCATION POJO и собираю его в XML, затем записываю XML в файл.
Проблема состоит в том, что тысячи сообщений могут быстро прийти, поэтому мне нужно объединить каждые 500 местоположений в один файл.
Я не уверен, как это сделать в Camel,
Есть ли способ «кэшировать» или собирать сообщения в какой-то список, пока счетчик не достигнет 500, затем записать их в файл и начать новый список?