我們有其中一個大的輸入文件被衝進許多單獨的文件,然後彙總到一起使用Spring集成匯聚一Spring集成項目。Spring集成聚合時最後一個記錄過濾器
管道中有許多過濾器會過濾掉不需要的單個文件。我們跟蹤爲每個相關輸入文件過濾的文件數量。我們的@ReleaseStrategy檢查是否收到了單個文件的數量減去過濾的單個文件的數量。如果它擊中我們的ReleaseStrategy之前通過過濾來處理的最後一個單獨的文件
會發生什麼? ReleaseStrategy是爲每個到達它的文件調用的,如果最後一個單獨的文件被過濾了,我不會再被輪詢,但是我也希望Spring已經預見到了這個用例,併爲它提供了一些非hackish的規定,我與@Aggregator事件。如果我超時,或者如果我導致所有過濾點檢查以查看它們是否是最後一個文件,我都沒有收到@Aggregator事件。
謝謝!
我們已經根據事件的順序確認測試片狀,我們需要解決這個問題。我看到ReleaseStrategy收到了這個消息的完整列表,就像Aggregator一樣。我們的聚合器需要保持狀態,記住ReleaseStrategyso的最後一個參數,我們可以僞造一個對Aggregator的調用。我不會將此標記爲問題的答案,因爲我仍然抱有希望有人會提出Spring批准的「正確方法」來做到這一點,但我認爲這是Spring Integration體系結構中的一個漏洞,它將過濾與聚合。 – DavesPlanet