У меня есть сплиттер интеграции Spring со следующей сигнатурой метода:
@Splitter
public List<Message<String[]>> splitCsvIntoSeperateMessages(Message<List<String[]>> message)
Полезная нагрузка сообщения - ArrayList of String [].Разделитель считывает каждую строку в списке, создает новое сообщение, устанавливающее полезную нагрузку для элемента данных в списке, добавляет CorrelationId, SequenceNumber и SequenceSize в заголовок и, наконец, возвращает ArrayList of Messages.
Проблемаявляется то, что когда каждое отдельное сообщение отправляется на следующий канал, CorrelationId, SequenceNumber и SequenceSize все перезаписываются новыми значениями.Это ожидаемое поведение или я что-то упустил?
Фрагмент кода ниже:
@Splitter
public List<Message<String[]>> splitCsvIntoSeperateMessages(Message<List<String[]>> message) {
List<Message<String[]>> returnVal = new ArrayList<Message<String[]>>();
String headerId = null;
int sequenceSize = 0;
int sequenceNumber = 0;
for(String[] payload : message.getPayload()){
if(payload[0].equals("HEAD")){
headerId = UUID.randomUUID().toString();
sequenceSize = Integer.parseInt(payload[payload.length-1]);
sequenceNumber=0;
}
sequenceNumber++;
Message<String[]> msg =
MessageBuilder
.withPayload(payload)
.setCorrelationId(headerId)
.setSequenceSize(sequenceSize)
.setSequenceNumber(sequenceNumber)
.build();
returnVal.add(msg);
}
return returnVal;
}
Использование Spring Integration 2.0 M6