为什么消息中的多个构造函数会导致 Akka.NET 传递失败?

Why do multiple constructors in messages cause Akka.NET to fail delivery?

我使用 Akka.NET 远程处理实现了一个非常简单的实现。

具体来说我有两个演员:

public class ClientQueryActor : ReceiveActor
{
    public ClientQueryActor(ActorSelection stockBarcodeActor)
    {
        this._stockBarcodeActor = stockBarcodeActor ?? throw new ArgumentNullException("stockBarcodeActor must be provided.");

        this.Receive<GetStockBarcodeByBarcodeRequest>(this.HandleStockBarcodeByBarcodeRequestReceived);
        this.Receive<GetStockBarcodeByBarcodeResponse>(this.HandleStockBarcodeByBarcodeResponseReceived);
    }

    private void HandleStockBarcodeByBarcodeRequestReceived(GetStockBarcodeByBarcodeRequest obj)
    {
        this._stockBarcodeActor.Tell(obj);
    }

    private void HandleStockBarcodeByBarcodeResponseReceived(GetStockBarcodeByBarcodeResponse obj)
    {

    }
}


public class StockBarcodeQueryActor : ReceiveActor
{

    public StockBarcodeQueryActor()
    {    
        this.Receive<GetStockBarcodeByBarcodeRequest>(this.HandleStockBarcodeByBarcodeRequestReceived);
    }

    private void HandleStockBarcodeByBarcodeRequestReceived(GetStockBarcodeByBarcodeRequest obj)
    {
        this.Sender.Tell(new GetStockBarcodeByBarcodeResponse(true, null, null));
    }
}

在大多数情况下,这些参与者似乎工作正常,问题出在我发送的消息中。

我的消息 class 大致如下所示:

public class GetStockBarcodeByBarcodeResponse 
{
    public GetStockBarcodeByBarcodeResponse(bool success) { }

    public GetStockBarcodeByBarcodeResponse(bool success, IEnumerable<string> errors) { } 
}

但是,当我尝试使用此 class 发送消息时,出现错误

'Association with remote system akka.tcp://client@localhost:2552 has failed; address is now gated for 5000 ms. Reason is: [Akka.Remote.EndpointDisassociatedException: Disassociated'

当我删除多个构造函数时,消息发送成功。

我在文档中找不到任何引用此问题的内容,有人可以向我解释一下这个限制吗?

任何人都可以提供任何建议的解决方法吗?

Bartosz 的评论是正确的答案 - 我们默认对用户定义的消息使用 JSON.NET 序列化,为了使反序列化工作,您需要使用 JsonConstructor 属性标记其中一个构造函数: Unable to deserialize classes with multiple constructors with Json.NET