领先一步
VMware 提供培训和认证,助您加速进步。
了解更多亲爱的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 也已发布,其中包括以下功能:
ProducerListener 回调支持;KafkaMessageListenerContainer 的新 Broker 发现机制;我们也在开发基于 Apache Kafka 0.9 的 Spring Integration Kafka 2.0。
今天我们很高兴地宣布,Spring Integration Zip 1.0.0.M1 已可从 Milestone Repository 获取。
特别感谢我们的朋友 Gunnar Hillert,他启动并开始了这项扩展的工作。
Spring Integration Zip 扩展提供了您所期望的压缩/解压缩组件。“艰苦”的工作由 AbstractZipTransformer 实现完成,该实现底层使用了 ZeroTurnaround ZIP Library。zt-zip 在标准的 java.util.zip 包之上提供了一个方便的高级 API。
在此 Milestone 1 版本中,提供了以下组件:
此组件的目标是将入站消息负载进行 zip 处理,并生成一个压缩归档文件,基于 java.util.zip.Deflater 压缩级别。支持以下消息负载类型:File、String、byte[] 或这些类型的 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;
}
解压缩组件中实现的逻辑同样简单。对于输入消息负载,支持以下类型:File、String 或 byte[],并将其视为要解压缩的归档文件。解压数据时,您还可以指定一个属性 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.FILENAME 和 ZipHeaders.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 标签)