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 Kakfa 1.3 也已发布,其中包括以下功能:

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

我们也在开发基于 Apache Kafka 0.9 的 Spring Integration Kafka 2.0。

Spring Integration Zip

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

特别感谢我们的朋友 Gunnar Hillert,他启动并开始了这项扩展的工作。

Spring Integration Zip 扩展提供了您所期望的压缩/解压缩组件。“艰苦”的工作由 AbstractZipTransformer 实现完成,该实现底层使用了 ZeroTurnaround ZIP Libraryzt-zip 在标准的 java.util.zip 包之上提供了一个方便的高级 API。

在此 Milestone 1 版本中,提供了以下组件:

Zip transformer (zip 转换器)

此组件的目标是将入站消息负载进行 zip 处理,并生成一个压缩归档文件,基于 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 社区所有即将举行的活动。

查看所有