Spring Integration Zip 1.0.0.M1 及其他

发布 | Artem Bilan | 2016年1月12日 | ...

尊敬的 Spring 社区:

Spring Integration 团队祝您新年快乐!

我们一直在努力开发新功能和改进。以下是我们最近围绕 Spring Integration 和 Spring AMQP 开展的活动概述。

  • 我们发布了几个 Spring Integration 4.2.x 的维护版本,最新版本是 Spring Integration 4.2.4。所有其他维护版本仅在 需要 时发布。

  • Spring Integration 4.3 计划在今年夏天发布。此外,对于 5.0 版本,我们开始更仔细地研究如何将 Reactive Streams 集成到框架中。

  • 同样,对于 Spring AMQP 项目,当前的维护版本是 1.5.3,并且 1.6 也已开始开发。

  • Spring Integration Java DSL 1.1.1 也已可用。顺便说一下,您可以在最新的 Spring Integration 手册 中找到几个 Java DSL 示例。

  • Spring Integration Kafka 1.3 也已发布,其功能包括:

    • Kafka 原生偏移量管理器;
    • 同步生产者和 ProducerListener 回调支持;
    • KafkaMessageListenerContainer 的新代理发现;
    • 是的:高级消费者适配器已被弃用。

我们还在开发 Spring Integration Kafka 2.0,它将基于 Apache Kafka 0.9。

Spring Integration Zip

今天,我们很高兴地宣布 Spring Integration Zip 1.0.0.M1 现已从 里程碑存储库 中获取。

特别感谢我们的朋友 Gunnar Hillert,他发起了并开始了此扩展的工作。

Spring Integration Zip 扩展提供了您期望的压缩/解压缩组件。“困难”的工作由 AbstractZipTransformer 实现完成,这些实现使用 ZeroTurnaround ZIP 库 在后台。zt-zip 在标准 java.util.zip 包的基础上提供了方便的高级 API。

在此里程碑 1 中,提供了以下组件:

Zip 变换器

此组件的目标是压缩传入消息有效负载,并基于 java.util.zip.Deflater 压缩级别生成压缩存档。支持以下消息有效负载类型:FileStringbyte[] 或这些类型的 Iterable。结果可以作为 File 或压缩数据的 byte[] 返回。这由 ZipResultType 定义。

使用 XML 组件配置 Zip 变换器很容易。

<int-zip:zip-transformer input-channel="input"
                         output-channel="output"
                         result-type="BYTE_ARRAY"
                         compression-level="9"/>

以及使用 Java 配置。

@Bean
@Transformer(inputChannel = "input", outputChannel = "output")
public ZipTransformer zipTransformer() {
    ZipTransformer zipTransformer = new ZipTransformer();
    zipTransformer.setCompressionLevel(Deflater.BEST_COMPRESSION);
    zipTransformer.setZipResultType(ZipResultType.BYTE_ARRAY);
    return zipTransformer;
}

解压变换器

解压缩组件中实现的逻辑同样简单。对于输入消息有效负载,支持以下类型:FileStringbyte[],并将其视为要解压缩的存档。解压缩数据时,您还可以指定属性 expectSingleResult。如果设置为 true 并且检测到多个 1 个 zip 条目,则会引发 MessagingException。此属性还会影响有效负载的返回类型。如果设置为 false(默认值),则有效负载类型为 SortedMap,如果设置为 true,则返回实际的 zip 条目。

此组件的配置也很简单。

<int-zip:unzip-transformer input-channel="input"
                           output-channel="output"
                           delete-files="true"
                           result-type="FILE"
                           expect-single-result="true"/>
@Bean
@Transformer(inputChannel = "input", outputChannel = "output")
public UnZipTransformer unZipTransformer() {
    UnZipTransformer unZipTransformer = new UnZipTransformer();
    unZipTransformer.setExpectSingleResult(true);
    unZipTransformer.setZipResultType(ZipResultType.FILE);
    unZipTransformer.setWorkDirectory(new File("/usr/tmp/uncompress"));
    unZipTransformer.setDeleteFiles(true);
    return unZipTransformer;
}

解压结果拆分器

UnZipResultSplitter 可用作下游辅助组件,以将每个解压缩的条目作为单独的消息生成。FileHeaders.FILENAMEZipHeaders.ZIP_ENTRY_PATH 标头将为每个拆分项填充。

<int:chain input-channel="input" output-channel="out">
    <int-zip:unzip-transformer result-type="BYTE_ARRAY"/>
    <int:splitter>
        <bean class="org.springframework.integration.zip.splitter.UnZipResultSplitter"/>
    </int:splitter>
</int:chain>

结论

这仅仅是此扩展的开始,任何社区反馈对我们都非常重要,因为它可以帮助我们了解需要改进、添加或更改的内容。因此,请不要犹豫,通过任何可用的渠道与我们联系,分享您的想法或寻求我们的帮助!

项目页面 | JIRA | [贡献] (https://github.com/spring-projects/spring-integration/blob/master/CONTRIBUTING.md) | StackOverflow (spring-integration 标签)

获取 Spring 时事通讯

与 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部