Spring integration 使用UnZipResultSplitter时丢失标头

Spring integration 使用UnZipResultSplitter时丢失标头,spring-integration,Spring Integration,我使用的是SpringIntegrationZIP扩展,似乎丢失了在流上游添加的头文件。我猜它们正在unziprestaltsplitter.splitUnzippedMap()中丢失,因为我没有看到任何显式复制它们的内容 我似乎记得这在拆分器中并不罕见,但我无法确定在这种情况下应该使用什么策略。是的 它看起来像一只虫子 拆分器合同如下: if (item instanceof Message) { builder = this.getMessageBuilderFactory().fr

我使用的是SpringIntegrationZIP扩展,似乎丢失了在流上游添加的头文件。我猜它们正在
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;
    }

}