2017-08-28 58 views
0

考慮這種情況:春點燃不同的節點上集成

Spring應用程序啓動其中加入一些點燃集羣Ignite節點。在這個節點上開始點燃注入@SpringResource的singleton服務(並且根據點火文檔,這個變量必須標記爲transient)。現在這個節點停止運行,服務的副本在不知道Spring的其他節點上恢復。

所以問題是:如何將春豆注入這個恢復的服務?

Thanx提前。

回答

0

您可以將您的bean傳遞給服務的構造函數並將其記錄到非瞬態字段。你應該確保這個bean是可序列化的,並且它不依賴於與Spring有關的任何東西(包括註釋,如果你在第二個節點的類路徑中沒有Spring的話)。否則,Ignite將無法部署您的服務並將其反序列化到其他節點上。

+0

thx,我想到了。但是我希望這樣的任務有一些內部的點火機制,例如可以發現彈簧應用並從中請求bean的代理? – vk23

+1

@NoMercy您可以強制使用Spring將服務部署到節點上。您可以使用ServiceConfiguration#setNodeFilter指定一個節點過濾器,並檢查該過濾器中的某些條件。例如,你可以用一些特定的字符串爲所有spring節點的名稱加前綴並檢查它。它看起來像這樣: cfg.setNodeFilter(ignite.cluster()。forPredicate(/ * your predicate * /)。predicate()); 在這種情況下,SpringResource註釋將適用於服務的所有實例。 – Denis