取得領先
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 整合到 Framework 中。
與 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
的新 Brokers 探索;我們也正在開發基於 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 中,提供了以下元件:
此元件的目標是壓縮傳入訊息的 payload,並根據 java.util.zip.Deflater 壓縮等級產生一個壓縮檔案。支援以下訊息 payload 類型: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;
}
在解壓縮元件中實現的邏輯同樣簡單。對於輸入訊息的 payload,支援以下類型:File
、String
或 byte[]
,並將其視為要解壓縮的檔案。解壓縮資料時,您還可以指定一個屬性 expectSingleResult
。如果設定為 true
且檢測到多個 1
個 zip 條目,則會引發 MessagingException
。此屬性也會影響 payload 的傳回類型。如果設定為 false
(預設值),則 payload 的類型將為 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
tag)