Spring Integration @Splitter, что происходит со значениями заголовка, которые я изменил? - PullRequest
2 голосов
/ 24 августа 2010

У меня есть сплиттер интеграции 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

1 Ответ

2 голосов
/ 25 августа 2010

До 2.0.0.M6 по умолчанию сплиттер устанавливает ключ корреляции, порядковый номер и размер последовательности. Мы обсудили варианты использования, такие как вложенное разбиение , и вы можете отметить это обсуждение.

Эта функция добавлена ​​в 2.0.0.M7. Проблема не должна возникать в более поздних версиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...