首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka.NET .NET框架- Akka.Remote配置总是在开始时出错(然后正常工作)

Akka.NET .NET框架- Akka.Remote配置总是在开始时出错(然后正常工作)
EN

Stack Overflow用户
提问于 2021-11-16 02:33:24
回答 1查看 142关注 0票数 1

我正在尝试配置一个远程演员,但我遇到了一些麻烦。每次我启动我的控制台应用程序时,都会遇到一个错误:

(由于某种原因,我无法抓住它,但以下是我能从中收集到的所有信息):

代码语言:javascript
复制
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远程角色的研究中,我还没有找到配置地址的方法。

这是我的代码:

代码语言:javascript
复制
        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类,以防有帮助:

代码语言:javascript
复制
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);
        });
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-06-09 22:43:10

我也面临着同样的问题。这个帖子是旧的,但不知怎么的,我在开始的时候也收到了同样的错误。如果删除配置配置文件中的远程信息的部分,则不会发生错误。

我升级到了最新版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69983136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档