Java/Akka(v2.3.9)在這裏。我的每阿卡UntypedActor
子類必須應對一些「通用」消息,如ExecuteOrder66
的能力:如何廣播 - 全部在阿卡?
// Groovy pseudo-code
class StormTrooper extends UntypedActor {
@Override
void onReceive(Object message) throws Exception {
if(message instanceof ExecuteOrder66) {
// Betray the Jedi, serve only the emperor.
}
}
}
比方說,我有100個不同的演員子類,每個支持ExecuteOrder66
。我需要一種方式將broadcast這個消息的實例給我的每一個演員;所以像大家得到的公開廣播公佈。
我認爲上面的Akka文檔的鏈接讓我接近,但是我沒有看到有人向我的每個演員發送ExecuteOrder66
。有任何想法嗎?
謝謝@Andrey Tyukin(+1) - 你是說Akka沒有能力「看到」遠程系統的所有演員?我認爲,在連接時(在兩個同伴演員系統之間),將會有信息交換,以便在node1上運行的演員系統#1可以獲得關於演員系統#2的實時統計信息/信息,或許正在運行在'node2'上。你是說這沒有發生?! – smeeb
說實話,我不知道。但我可以很好地想象兩個演員系統'A'和'B'或多或少分開存在的情況,並且自己提供兩種完全不同的服務。有時候,系統'A'可能會向系統'B'發出一些請求。 'B'只會提供請求,否則會保持安靜。現在,如果你有N個不同的系統,它們也可能都是鬆散耦合的,並且或多或少地分開工作。他們爲什麼要一直交換N個實時統計數據? Akka Cluster默認情況下是這樣的,但普通的Actor系統?我不知道。 –
對我以前的評論作出澄清:你說的話(列出其他遠程節點上的角色,交換實時統計數據等)當然是可能的,但這不是默認的。如果有兩個連接的演員系統,我不希望他們總是交換大量的演出統計。同樣,(afaik)沒有向全世界廣播某些東西的功能,但它可以很容易地實現,也許可以在每個演員系統上啓動簡單的MyBroadcaster演員。 –