1
我們正在使用hazelcast執行程序服務在我們的服務器集羣中分發任務。關閉本地客戶端的hazelcast exector服務
我們希望關閉其中一臺服務器並將其從羣集中取出,但允許其繼續工作一段時間以完成正在執行的操作,但不接受來自榛木執行器服務的任何新任務。
我不想關閉hazelcast實例,因爲當前任務可能需要它來完成他們的工作。
關閉hazelcast執行器服務不是我想要的。這就關閉了整個集羣的執行者。
我想繼續處理本地隊列中的任務,直到它爲空,然後關閉。
有我的方式,讓羣集中的節點繼續使用hazelcast但告訴它停止從執行服務接受新的任務?
這是一個很好的提示。謝謝!這在榛子裏似乎是一個缺點。我會認爲父任務不必參與決定任務可以執行的位置。不過,我想我可以用這個提示做些事情。 我的想法是使用公共提交(可贖回任務,MemberSelector memberSelector),並有成員選擇返回沒有「關停」的屬性的所有任務。執行者將隨機挑選其中一個並在那裏發送任務。 謝謝! –
這裏就是我想:第一,當我知道我們要關閉我們運行該服務器:。'的getInstance()getCluster()getLocalMember()setBooleanAttribute(HAZELCAST_SHUTDOWN_KEY,真)'然後在我們的任務運行我們做到這一點: ' MemberSelector memberSelector =新MemberSelector(){ @覆蓋 公共布爾選擇(會員成員){ 回報member.getBooleanAttribute(HazelcastService.HAZELCAST_SHUTDOWN_KEY);! } }; return _executor.submit(task,memberSelector); ' 如果有任何問題,我會回覆。 –