Tag: akka.net

Akka.net开始和停止没有任何活动

我正在尝试从Scala(2.4.11)中的类型安全akka演员发送消息给C#中的Akka.net演员(1.0.4) 我的.Net演员有一个奇怪的问题,它一直说开始然后停止,但我不知道幕后发生了什么: 一块Akka.net日志: 2015-11-18 16:23:57.6168|DEBUG|Akka.Remote.Transport.ProtocolStateActor|Started (Akka.Remote.Transport.ProtocolStateActor) 2015-11-18 16:24:27.6578|DEBUG|Akka.Remote.Transport.ProtocolStateActor|Stopped 2015-11-18 16:24:42.6344|DEBUG|Akka.Remote.Transport.AkkaProtocolManager|now supervising akka://converter/system/transports/akkaprotocolmanager.tcp.0/akkaProtocol-tcp%3a%2f%2fconverter%40192.168.56.1%3a60161-107 2015-11-18 16:24:42.6344|DEBUG|Akka.Remote.Transport.ProtocolStateActor|Started (Akka.Remote.Transport.ProtocolStateActor) 2015-11-18 16:25:12.6871|DEBUG|Akka.Remote.Transport.ProtocolStateActor|Stopped 2015-11-18 16:25:27.6402|DEBUG|Akka.Remote.Transport.AkkaProtocolManager|now supervising akka://converter/system/transports/akkaprotocolmanager.tcp.0/akkaProtocol-tcp%3a%2f%2fconverter%40192.168.56.1%3a60162-108 2015-11-18 16:25:27.6402|DEBUG|Akka.Remote.Transport.ProtocolStateActor|Started (Akka.Remote.Transport.ProtocolStateActor) 它正在对发送的每条消息进行启动/停止,但是演员没有执行,我怎么能检查发生了什么?

Akka.net和unit testing

我想使用Akka.net TestKit编写unit testing,但我有一个问题。 我有一个类SubscriptionService,负责向选定的actor传输消息。 public class SubscriptionService : ReceiveActor { private readonly ActorSelection service1; private readonly ActorSelection service2; public SubscriptionService() { this.service1 = Context.ActorSelection(“Service1”); this.service2 = Context.ActorSelection(“Service2”); this.Receive(message => this.ProcessRequestMessage(message)); } private void ProcessRequestMessage(RequestMessage message) { this.service1.Tell(message); this.service2.Tell(message); } 我该如何测试这种行为? 我创建了这个测试但是在这个测试中我得到了exception。 “ 附加信息:Assert.Fail失败。失败:等待消息时超时00:00:03 ” [TestClass] public class SubscriptionServiceUnitTests : TestKit { [TestMethod] public void Test1() […]

Akka.net:访问群集中的远程Actors

在集群环境中,我有一个种子节点和node1和node2。 从node1我想发送一条消息给在node2上创建的Actor。 node2上此节点的本地路径是akka:MyAkkaSystem / user / AnActor。 现在我想通过使用如下的ActorSelection从一个Actor从node1向这个特定的actor发送一条消息: var actorSystem = ActorSystem.Create(“MyTestSystem”); var c = actorSystem.ActorSelection(“/user/ConsoleReceiver”); c.Tell(“Hello World”); 在node2上,actor已经像这样创建: var actorSystem = ActorSystem.Create(“MyTestSystem”); var r = actorSystem.ActorOf(Props.Create(), “ConsoleReceiver”); Console.WriteLine(r.Path); Console.ReadLine(); actorSystem.Terminate().Wait(); 不幸的是,由于尝试以死信结束,因此无效。 node2上的HOCON配置如下所示: akka { actor { provider = “Akka.Cluster.ClusterActorRefProvider, Akka.Cluster” deployment { } } remote { log-remote-lifecycle-events = DEBUG log-received-messages = on helios.tcp { […]

STA中的Akka.net演员

我需要将不同格式的数千个ms办公文档转换为一种通用格式。 为了加快速度,我将使用akka.net进行并行化。 WordSaveAsActor应该: 在单线公寓中运行 持有Word应用程序实例 在此实例上进行COM调用,例如SaveAs(..),其中包含来自多个并行线程的接收消息的路径 任何崩溃都会重启自己 甚至可以在STA中运行akka.net actor吗? 如果我以这种方式使用akka.net,有什么顾虑吗?

嵌套分叉的正确模式

我有一个有很多孩子的演员,我正在查询它以获得其孩子们的数据汇总。 此操作可能需要几秒钟。 我即将这样做,感觉非常错误。 handle方法由Ask调用。 public void Handle(Message message) { var children = Context.GetChildren(); var tasks = new List<Task>(); foreach (var child in children) { var t = child.Ask(new Query); tasks.Add(t); } Task.WaitAll(tasks.ToArray()); // Gah! // do some work Sender.Tell(new Response(new Results())); } 我有一些想法,但想得到一些意见,因为我真的不想重新发明一个20边的车轮。 我担心Sender的引用以及当我最终调用Tell时它会指向什么,因为它是一个静态调用。 我最终使用了Task.WhenAll延续,但仍然不相信它是正确的Akka方式 – 这就是重点。 我可以使它工作,我只想知道最佳实践选项。