Использование akka (.net) Я пытаюсь реализовать простой случай использования кластера.Кластер Akka (.net) с удаленными узлами: исключенное исключение
- Кластер - для узлов вверх/вниз событий.
- Remote - для отправки сообщения конкретному узлу.
Существует два актера: Мастер-узел, в котором участвуют события кластера и подчиненный узел, который подключается к кластеру.
Address address = new Address("akka.tcp", "ClusterSystem", "master", 8080);
cluster.Join(address);
Когда ClusterEvent.MemberUp сообщение reseived Master Node создания актера ссылка:
ClusterEvent.MemberUp up = message as ClusterEvent.MemberUp;
ActorSelection nodeActor = system.ActorSelection(up.Member.Address + "/user/slave_0");
Отправка сообщения этого актера вызывает ошибку:
ассоциации с удаленной системой akka.tcp : // ClusterSystem @ slave: 8090 не удалось; адрес теперь закрыт на 5000 мс. Причина: [диссоциированный]
мастер конфигурация:
akka {
actor {
provider = ""Akka.Cluster.ClusterActorRefProvider, Akka.Cluster""
}
remote {
helios.tcp {
port = 8080
hostname = master
bind-hostname = master
bind-port = 8080
send-buffer-size = 512000b
receive-buffer-size = 512000b
maximum-frame-size = 1024000b
tcp-keepalive = on
}
}
cluster{
failure-detector {
heartbeat - interval = 10 s
}
auto-down-unreachable-after = 10s
gossip-interval = 5s
}
stdout-loglevel = DEBUG
loglevel = DEBUG
debug {{
receive = on
autoreceive = on
lifecycle = on
event-stream = on
unhandled = on
}}
}
раб конфигурация:
akka {
actor {
provider = ""Akka.Cluster.ClusterActorRefProvider, Akka.Cluster""
}
remote {
helios.tcp {
port = 8090
hostname = slave
bind-hostname = slave
bind-port = 8090
send-buffer-size = 512000b
receive-buffer-size = 512000b
maximum-frame-size = 1024000b
tcp-keepalive = on
}
}
cluster{
failure-detector {
heartbeat - interval = 10 s
}
auto-down-unreachable-after = 10s
gossip-interval = 5s
}
stdout-loglevel = DEBUG
loglevel = DEBUG
debug {{
receive = on
autoreceive = on
lifecycle = on
event-stream = on
unhandled = on
}}
}
Так вы используете Akka.Cluster и Akka.Remote взаимозаменяемо? То есть используя Remote для подключения к узлам, которые не являются частью кластера? – Aaronontheweb
Нет, все узлы являются частью кластера. Мне нужен RPC-путь для каждого узла в кластере. Есть ли другой способ отправить сообщение на конкретный узел кластера вместо actorRef.Tell()? – qrux