先行一步
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 Kafka 1.3 也已发布,包含以下特性:
ProducerListener
回调支持;KafkaMessageListenerContainer
的新 Broker 发现;我们还在开发 Spring Integration Kafka 2.0,它将基于 Apache Kafka 0.9。
今天,我们很高兴地宣布 Spring Integration Zip 1.0.0.M1 现已可从Milestone Repository获取。
特别感谢我们的朋友 Gunnar Hillert,他发起并启动了此扩展的工作。
正如您所期待的,Spring Integration Zip 扩展提供了压缩/解压缩组件。这项“繁重”的工作由使用了 ZeroTurnaround ZIP 库的 AbstractZipTransformer
实现来完成。zt-zip
在标准的 java.util.zip
包之上提供了一个方便的高级 API。
该里程碑 1 版本提供了以下组件
此组件的目标是压缩入站消息负载,并基于 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
标签)