我嘗試使用akka.net做一個簡單的羣集。Akka.Net羣集簡單解釋
目標是讓服務器接收請求,並通過它的羣集akka.net處理它。
爲了測試和學習,我創建了一個接收數學方程的簡單WCF服務,並且我想發送這個方程來解決。
我有一個項目服務器和另一個客戶端。
在服務器端的配置是:
<![CDATA[
akka {
actor {
provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
debug {
receive = on
autoreceive = on
lifecycle = on
event-stream = on
unhandled = on
}
deployment {
/math {
router = consistent-hashing-group #round-robin-pool # routing strategy
routees.paths = [ "/user/math" ]
virtual-nodes-factor = 8
#nr-of-instances = 10 # max number of total routees
cluster {
enabled = on
max-nr-of-instances-per-node = 2
allow-local-routees = off
use-role = math
}
}
}
}
remote {
helios.tcp {
transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
applied-adapters = []
transport-protocol = tcp
port = 8081
hostname = "127.0.0.1"
}
}
cluster {
seed-nodes = ["akka.tcp://[email protected]:8081"] # address of seed node
}
}
]]>
在客戶端上的配置是這樣的:
<![CDATA[
akka {
actor.provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
remote {
log-remote-lifecycle-events = DEBUG
log-received-messages = on
helios.tcp {
transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
applied-adapters = []
transport-protocol = tcp
port = 0
hostname = 127.0.0.1
}
}
cluster {
seed-nodes = ["akka.tcp://[email protected]:8081"] # address of the seed node
roles = ["math"] # roles this member is in
}
actor.deployment {
/math {
router = round-robin-pool # routing strategy
routees.paths = ["/user/math"]
nr-of-instances = 10 # max number of total routees
cluster {
enabled = on
allow-local-routees = on
use-role = math
max-nr-of-instances-per-node = 10
}
}
}
}
]]>
羣連接似乎正常進行。我看到狀態[UP]和與服務器端出現的「數學」角色的關聯。
事件依循WebCramler上的例子,我沒有達到讓消息傳遞。我總是得到一個死路。
我嘗試這樣的:
actor = sys.ActorOf(Props.Empty.WithRouter(FromConfig.Instance), "math");
或
var actor = sys.ActorSelection("/user/math");
是否有人知道一個很好的教程或能幫助我嗎? 感謝
我嘗試,它不工作更好。我實現的唯一方法是要求將領導者的地址集中在一個特定的角色上。但是這樣做我不會使用部署路由器的功能。 –
示例項目:https://1drv.ms/u/s!AjjNROp1-dHyl7VVP7BI6uwl-cmSTQ –
編輯我的答案,分享我的研究結果在您的示例項目。也。下次請使用不同的代碼共享機制,然後onedrive。 – Danthar