我正在尝试配置一个远程演员,但我遇到了一些麻烦。每次我启动我的控制台应用程序时,都会遇到一个错误:
(由于某种原因,我无法抓住它,但以下是我能从中收集到的所有信息):
System.NullReferenceException: 'Object reference not set to an instance of an object.'
at Akka.Actor.ActorPath.ToStringWithAddress(Address address) in D:\a\1\s\src\core\Akka\Actor\ActorPath.cs:line 738
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=Akka
StackTrace:
at Akka.Actor.ActorPath.ToStringWithAddress(Address address) in D:\a\1\s\src\core\Akka\Actor\ActorPath.cs:line 738从错误上看,我似乎没有配置地址。在我所有关于如何配置akka远程角色的研究中,我还没有找到配置地址的方法。
这是我的代码:
using Akka.Actor
using Akka.Configuration
var config = ConfigurationFactory.ParseString(@"
akka {
actor {
provider = remote
}
remote {
dot-netty.tcp {
transport-protocol = tcp
port = 8091
hostname = ""127.0.0.1""
}
log-remote-lifecycle-events = INFO
}
}");
using (var system = ActorSystem.Create("MyServer", config))
{
system.ActorOf(Props.Create(() => new AkkaCalcServerPipeTo()), "CalcServer");
...
}是否有一种方法来配置远程Actors以删除此错误?我的假设是我的配置是非常错误的,所以我得到了这个随机错误。
如果这有帮助的话,我将在.NET框架4.7.2上运行。
编辑:
我已经意识到这可能不是足够的信息,我在下面添加了AkkaCalcServerPipeTo类,以防有帮助:
using System;
using System.Threading.Tasks;
using Akka.Actor;
using CalcMessages;
public class AkkaCalcServerPipeTo : ReceiveActor, ILogReceive
{
public AkkaCalcServerPipeTo()
{
Receive<Messages.AdditionRequest>(ar =>
{
Console.WriteLine("Received addition request {0} + {1} - {2}", ar.A, ar.B, DateTime.Now);
Sender.Tell(new Messages.CalcResponse(ar.A + ar.B), Self);
});
Receive<Messages.SubtractionRequest>(sr =>
{
Console.WriteLine("Received subtraction request {0} - {1} - {2}", sr.A, sr.B, DateTime.Now);
Sender.Tell(new Messages.CalcResponse(sr.A - sr.B), Self);
});
Receive<Messages.MultiplicationRequest>(mr =>
{
var self = Self; // closure
Task.Run(async () => {
await Task.Delay(2500);//Thread.Sleep(10000);//
Console.WriteLine("Received multiplication request {0} * {1} - {2}", mr.A, mr.B, DateTime.Now);
mr.Sender.Tell(new Messages.CalcResponse(mr.A * mr.B), self);
}).ContinueWith(x =>
{
if (x.IsFaulted)
{
}
}, TaskContinuationOptions.ExecuteSynchronously).PipeTo(self);
});
Receive<Messages.DivisionRequest>(dr =>
{
var self = Self; // closure
Task.Run(async () => {
await Task.Delay(10000);//Thread.Sleep(10000);//
Console.WriteLine("Received division request {0} / {1} - {2}", dr.A, dr.B, DateTime.Now);
dr.Sender.Tell(new Messages.CalcResponse(dr.A / dr.B), self);
}).PipeTo(self);
});
}
}发布于 2022-06-09 22:43:10
我也面临着同样的问题。这个帖子是旧的,但不知怎么的,我在开始的时候也收到了同样的错误。如果删除配置配置文件中的远程信息的部分,则不会发生错误。
我升级到了最新版本。
https://stackoverflow.com/questions/69983136
复制相似问题