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 整合到 Framework 中。

  • 與 Spring AMQP 專案類似,目前的維護版本是 1.5.3,並且也開始開發 1.6

  • Spring Integration Java DSL 1.1.1 也已發布。您可以在最新的 Spring Integration 手冊 中找到幾個 Java DSL 範例。

  • Spring Integration Kakfa 1.3 也已發布,具有以下功能:

    • Kafka Native Offest Manager;
    • Sync Producer 和 ProducerListener 回呼支援;
    • 適用於 KafkaMessageListenerContainer 的新 Brokers 探索;
    • 是的:High Level Consumer Adapter 已被棄用。

我們也正在開發基於 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 轉換器)

此元件的目標是壓縮傳入訊息的 payload,並根據 java.util.zip.Deflater 壓縮等級產生一個壓縮檔案。支援以下訊息 payload 類型:FileStringbyte[] 或這些類型的 Iterable。結果可以以壓縮資料的 Filebyte[] 形式傳回。這由 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 (UnZip 轉換器)

在解壓縮元件中實現的邏輯同樣簡單。對於輸入訊息的 payload,支援以下類型:FileStringbyte[],並將其視為要解壓縮的檔案。解壓縮資料時,您還可以指定一個屬性 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;
}

UnZip Result Splitter (UnZip 結果分割器)

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 tag)

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

取得領先

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部