Сбой конфигурации Akka.Remote
Я пытался создать систему актера, которая использует Akka.Remote с akka.net 1.3... Однако я не могу создать экземпляр системы из-за следующего исключения:
TypeLoadException: Cannot instantiate transport [Akka.Remote.Transport.DotNetty.DotNettyTransport]. It has no public constructor with [Akka.Actor.ActorSystem] and [Akka.Configuration.Config] parameters
Дело в том, что мой конфиг скопирован из документации Akka.NET, и я не знаю, что мне не удалось сделать... вот конфиг:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="akka" type="Akka.Configuration.Hocon.AkkaConfigurationSection, Akka" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<akka>
<hocon>
<![CDATA[
akka {
stdout-loglevel = INFO
loglevel = INFO
# this config section will be referenced as akka.actor
actor {
provider = remote
debug {
receive = on
autoreceive = on
lifecycle = on
event-stream = on
unhandled = on
}
}
# here we're configuring the Akka.Remote module
remote {
dot-netty.tcp {
transport-class = "Akka.Remote.Transport.DotNetty.DotNettyTransport,Akka.Remote"
#applied-adapters = []
transport-protocol = tcp
port = 9090
hostname = "127.0.0.1"
}
}
}
]]>
</hocon>
</akka>
</configuration>
Буду признателен за отзывы о том, что я делаю неправильно. Спасибо.
РЕДАКТИРОВАТЬ: вот трассировка стека:
"at Akka.Remote.EndpointManager.get_Listens () \ r \ n --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение ---\r\n в Akka.Remote.EndpointManager.<>c__DisplayClass48_0.b__0()\r\n в System.Threading.Tasks.Task`1.InnerInvoke()\r\n в System.Threading.Tasks.Task.Execute()"
1 ответ
Похоже, у вас неверная конфигурация транспорта. вместо указания транспорта вы должны использовать транспорт по умолчанию, удалив
#transport-class = "Akka.Remote.Transport.DotNetty.DotNettyTransport,Akka.Remote"
базовая конфигурация использует Akka.Remote.Transport.DotNetty.TcpTransport,Akka.Remote, вам не нужно явно определять ее в вашей конфигурации, если только для этого нет причин.