Spring integration 使用UnZipResultSplitter时丢失标头
我使用的是SpringIntegrationZIP扩展,似乎丢失了在流上游添加的头文件。我猜它们正在Spring integration 使用UnZipResultSplitter时丢失标头,spring-integration,Spring Integration,我使用的是SpringIntegrationZIP扩展,似乎丢失了在流上游添加的头文件。我猜它们正在unziprestaltsplitter.splitUnzippedMap()中丢失,因为我没有看到任何显式复制它们的内容 我似乎记得这在拆分器中并不罕见,但我无法确定在这种情况下应该使用什么策略。是的 它看起来像一只虫子 拆分器合同如下: if (item instanceof Message) { builder = this.getMessageBuilderFactory().fr
unziprestaltsplitter.splitUnzippedMap()
中丢失,因为我没有看到任何显式复制它们的内容
我似乎记得这在拆分器中并不罕见,但我无法确定在这种情况下应该使用什么策略。是的
它看起来像一只虫子
拆分器
合同如下:
if (item instanceof Message) {
builder = this.getMessageBuilderFactory().fromMessage((Message<?>) item);
}
else {
builder = this.getMessageBuilderFactory().withPayload(item);
builder.copyHeaders(headers);
}
public class MyUnZipResultSplitter {
public List<Message<Object>> splitUnzipped(Message<Map<String, Object>> unzippedEntries) {
final List<Message<Object>> messages = new ArrayList<Message<Object>>(unzippedEntries.size());
for (Map.Entry<String, Object> entry : unzippedEntries.getPayload().entrySet()) {
final String path = FilenameUtils.getPath(entry.getKey());
final String filename = FilenameUtils.getName(entry.getKey());
final Message<Object> splitMessage = MessageBuilder.withPayload(entry.getValue())
.setHeader(FileHeaders.FILENAME, filename)
.setHeader(ZipHeaders.ZIP_ENTRY_PATH, path)
.copyHeaders(unzippedEntries/getHeaders())
.build();
messages.add(splitMessage);
}
return messages;
}
}