2010-08-24 24 views
2

我有以下的方法簽名的彈簧集成分離器:Spring Integration @Splitter,我修改的標題值發生了什麼?

@Splitter 
public List<Message<String[]>> splitCsvIntoSeperateMessages(Message<List<String[]>> message) 

的消息有效載荷爲String []的ArrayList。分離器讀取列表中的每一行,創建一個新的消息,將有效負載設置爲List中的數據項,向關聯頭添加CorrelationId,SequenceNumber和SequenceSize,最後返回消息的ArrayList。

問題是,當每個單獨的消息發送到下一個通道時,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集成2.0 M6

回答

2

高達2.0.0.M6分離器將設置相關密鑰,序列號和序列大小默認情況下。我們已經討論過使用案例,如nested splitting,您可能可以在討論中加上標記。

此功能在2.0.0.M7中添加。在更高版本中不應該出現該問題。

+0

你能告訴我在哪裏得到夜間快照嗎?我的理解是sftp在那裏,但我找不到eto下載它? – Norge 2010-08-28 04:58:26

+0

如果您使用maven,您可以按照我寫的博客中的說明操作。 http://iweinfuld.posterous.com/spring-milestones-and-snapshots-with-maven s3browse已不復存在,但您可以使用本地瀏覽器(如mac上的cyberduck)具有相同的效果。 – iwein 2010-09-03 17:40:33

+0

它在M7中適合你嗎? – iwein 2010-09-12 09:02:18