Я сделал 2 решения Akka.NET в надежде на тестирование Out Remoting на простом примере hello world, однако я продолжаю получать исключение Disassociated при попытке связи. У меня есть причина полагать, что это из-за разделяемого класса Greet, который должен быть сообщением, которое обе системы должны понимать. К сожалению, они этого не делают. Как я могу это исправить?Как разбить решение Akka.NET на два решения?
Это код приложения «Сервер»:
namespace Shared
{
public class Greet
{
public string Who { get; set; }
public Greet(string who)
{
Who = who;
}
}
}
namespace AkkaTest
{
using Shared;
class GreeterActor : ReceiveActor
{
public GreeterActor()
{
Receive<Greet>(x => Console.WriteLine("Hello {0}", x.Who));
}
}
class Program
{
static void Main(string[] args)
{
var config = ConfigurationFactory.ParseString(@"
akka {
actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
remote {
helios.tcp {
port = 9099
hostname = 127.0.0.1
}
}
}
");
using (ActorSystem system = ActorSystem.Create("MyServer", config))
{
system.ActorOf<GreeterActor>("greeter");
Console.ReadLine();
system.Shutdown();
}
}
}
}
Вот код клиента:
namespace Shared
{
public class Greet
{
public string Who { get; set; }
public Greet(string who)
{
Who = who;
}
}
}
namespace AkkaTest
{
using Shared;
class Program
{
static void Main(string[] args)
{
var config = ConfigurationFactory.ParseString(@"
akka {
actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
remote {
helios.tcp {
port = 9090
hostname = 127.0.0.1
}
}
}
");
using (var system = ActorSystem.Create("MyClient", config))
{
//get a reference to the remote actor
var greeter = system
.ActorSelection("akka.tcp://[email protected]:9099/user/greeter");
//send a message to the remote actor
greeter.Tell(new Greet("Roger"));
Console.ReadLine();
}
}
}
}
EDIT: Ввод клиента и сервера в том же растворе, но разные проекты, а GreetingActor и Greet в совместных проектах исправляют проблемы. Тем не менее, я хотел бы иметь совершенно отдельные решения.
Итак, я могу добавить общий проект в оба решения, и это сработает? Я попробую. tnx – Marin
Пробовал, и это сработало! Tnx! – Marin