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 Native Offset 管理器;
    • 同步生产者和 ProducerListener 回调支持;
    • KafkaMessageListenerContainer 的新 Broker 发现;
    • 是的:High Level Consumer Adapter 已被弃用。

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

Spring Integration Zip

今天,我们很高兴地宣布 Spring Integration Zip 1.0.0.M1 现已可从Milestone Repository获取。

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

正如您所期待的,Spring Integration Zip 扩展提供了压缩/解压缩组件。这项“繁重”的工作由使用了 ZeroTurnaround ZIP 库AbstractZipTransformer 实现来完成。zt-zip 在标准的 java.util.zip 包之上提供了一个方便的高级 API。

该里程碑 1 版本提供了以下组件

Zip transformer

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

使用 XML 组件配置 Zip Transformer 很容易

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

使用 Java Config 也一样

@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;
}

UnZip transformer

解压缩组件中实现的逻辑同样简单。对于输入消息负载,支持以下类型: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;
}

UnZip Result Splitter

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 社区所有即将举办的活动。

查看全部