领先一步
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
的新代理发现;我们还在开发 Spring Integration Kafka 2.0,它将基于 Apache Kafka 0.9。
今天,我们很高兴地宣布 Spring Integration Zip 1.0.0.M1 现已从 里程碑存储库 中获取。
特别感谢我们的朋友 Gunnar Hillert,他发起了并开始了此扩展的工作。
Spring Integration Zip 扩展提供了您期望的压缩/解压缩组件。“困难”的工作由 AbstractZipTransformer
实现完成,这些实现使用 ZeroTurnaround ZIP 库 在后台。zt-zip
在标准 java.util.zip
包的基础上提供了方便的高级 API。
在此里程碑 1 中,提供了以下组件:
此组件的目标是压缩传入消息有效负载,并基于 java.util.zip.Deflater
压缩级别生成压缩存档。支持以下消息有效负载类型:File
、String
、byte[]
或这些类型的 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;
}
解压缩组件中实现的逻辑同样简单。对于输入消息有效负载,支持以下类型: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
标签)