1
Iterator
およびカスタムヘッダ情報を返すことができるメッセージスプリッタを実装することは可能ですか?私は次のクラスにSpring統合:ヘッダーが豊富なカスタムスプリッター
public class CsvFileToIteratorSplitter extends AbstractMessageSplitter {
@Override
protected Object splitMessage(Message<?> message) {
Object payload = message.getPayload();
Assert.isInstanceOf(File.class, payload, "Expected java.io.File in the message payload");
try {
InputStream source = new FileInputStream((File) payload);
BufferedReader reader = new BufferedReader(new InputStreamReader(source));
String header = reader.lines().findFirst().orElse(null);
return MessageBuilder.withPayload(reader.lines().iterator())
.setHeaderIfAbsent("HEADER", header)
.build();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
を持っている場合、例えば
は、それから私は、ヘッダに追加することができますが、ペイロードは、実際にIterator
のインスタンスであり、私はクラスのように変更した場合は分割が
を失敗しました今すぐです
public class CsvFileToIteratorSplitter extends AbstractMessageSplitter {
@Override
protected Object splitMessage(Message<?> message) {
log.debug("{}", message.toString());
Object payload = message.getPayload();
Assert.isInstanceOf(File.class, payload, "Expected java.io.File in the message payload");
try {
InputStream source = new FileInputStream((File) payload);
BufferedReader reader = new BufferedReader(new InputStreamReader(source));
return reader.lines().iterator();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
分割は機能しますが、ヘッダー情報は失われます。
機能を分割してヘッダに追加する方法はありますか?
ありがとうございました。うまく動作します – Pram