问题标签 [akka.net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 Akka.NET 中测试自我消息发送
我是 Akka.NET 的新手,目前我很难测试我的演员是否向自己发送了任何消息。
这是我的演员代码:
那是我的测试代码
我的测试总是会出现以下消息:
失败:等待 AkkaNetTestPlaygroung.MySuperActorSuperMessage 类型的消息时超时 00:00:03
如何检查我的演员是否正在向自己发送另一条消息?
c# - Akka.Net test Child actor creation/supervision with TestKit
I have Akka.Net code similar to the following and I am trying to write tests for it:
I have got this test working but I am clearly missing something since I am not using much of TestKit at all. Is there still no official documentation for how to test this using TestKit ?
How should I create mock actors? Is there any method on TestKit I can call to wait until all messages have been processed?
c# - 如何在 Akka.NET 中使用工厂在运行时将参数传递给 DI 容器?
我有一个名为的父类SearchEngineSupervisor
,它创建SearchEngineWorker
子角色的实例。除了一些其他依赖项之外,我还需要在运行时创建SearchEngine
子类时将类的实例传递给子类。SearchEngineWorker
如果不使用 DI,这将类似于:
但是,我使用的是 DI (Autofac),并且在接受参数的 DI 扩展上没有 Props 方法的重载。这是我唯一的选择:
在任何其他环境中,我将利用 Autofac 并将工厂委托注入Func<SearchEngine, SearchEngineWorker>
到SearchEngineSupervisor
父类中,然后我将使用单个searchEngine
参数调用它来创建子类。然后 Autofac 将注入给定的参数以及子类的其他依赖项。
我尝试使用以下内容:
但这会引发异常,因为 Create 方法需要 NewExpression 类型的表达式,而不是 InvocationExpression:
我尝试了对上述主题的几种变体以试图掩盖调用,包括使用具体ISearchEngineWorkerFactory
对象,但到目前为止我的所有尝试都被挫败了,导致了类似的InvalidCastException.
同时,我将子类的依赖注入到父SearchEngineSupervisor
类中,并直接在Props.Create
委托中实例化子类,如上例所示。
c# - Akka.net 等待多条数据
这是我遇到的一个常见场景,我有两个(或更多)演员异步获取一些数据,然后我需要在他们全部完成后进行操作。
这样做的常见模式是什么?
这是一个简化的例子。
为了开始这件事,我发送了MasterActor
一条DoSomeWork
消息。
当我同时拥有 aActor1Response
和 an时,进行操作的常用方法是什么Actor2Response
?
我真的不想在每个接收处理程序中都有逻辑检查另一个是否完成或类似的事情。我猜我在想什么类似于Task.WaitAll()
方法的东西。
我只是以错误的方式解决问题吗?我需要以不同的方式重写演员吗?
任何常见的模式或解决方案都会很棒。
c# - Akka.net ActorSystem.AwaitTermination 在没有消息发送时触发 DeathWatchNotification
此消息在最简单的 Akka.net 示例应用程序中写入控制台。
[INFO][11/3/2015 7:21:06 PM][Thread 0008][akka://TestActorSystem/user] 从 akka://TestActorSystem/user 到 akka://TestActorSystem/user 的消息 DeathWatchNotification 未传递. 遇到 1 个死信。
这是非常简单的代码,您所做的只是创建一个演员,但您从不发送任何消息。
我运行的环境是:
- Windows 10 RTM 内部版本 10240
- 视觉工作室 2013 更新 5
- Akka.Net 通过 NeGet 1.0.4.12
- 目标框架 .NET 4.5
- 安装框架 .NET 4.5.2
- 控制台应用程序
- 任何 CPU
当您运行这个简单的应用程序时,上述 Akka.net 输出会在ActorSystem.AwaitTermination()
调用后立即出现。
它出现在我尝试创建的所有 Akka.net 应用程序中,并且我能够在这个简单的应用程序中重现它。因此,如果我发送消息或不发送消息,它总是会发生。如果你注释掉IActorRef
行,那么您将不会收到消息,因为没有创建任何演员。
这没有任何意义,为什么会发生这种情况。如果有人可以帮助解释为什么会发生这种情况以及如何防止它发生,即使没有发送过任何消息,那么我将不胜感激。
c# - 如何将 ClusterRouterPool 从 C# 转换为 HOCON 配置?
我正在学习 akka.net,并且可能会使用它来替换我们传统的消息驱动应用程序的一部分。
基本上我正在尝试将X 个节点加入到一个集群中。它是点对点类型,我可能会在一个节点上运行 X 个演员(同一个演员)。
如果我有 10 个作业(比如 SendEmailActor),理想情况下,我希望这 10 个作业中的每一个都在不同的节点上执行(平均分配负载)。
我有一个非常简单的控制台应用程序来演示。
我的 app.config 看起来像
我想使用 HOCON 并设置 akka.actor.deployment,但我无法让它工作。我不太了解routees.paths,以及它与actor.deployment/worker的关系,以及 routees.paths如何映射到用 C# 创建的演员。
另一个问题:使用 aka.net.cluster 是否可以“镜像”节点以提供冗余?或者 GuaranteedDeliveryActor(我认为它已重命名为 AtLeastOnceDelivery)是要走的路吗?
c# - 如何在部署在不同集群节点上的两个相同参与者之间保持状态?(阿卡网)
如果我有如下设置,假设我将有 3 个节点加入集群,并且我使用循环池。
“工人”只记得它已经处理了多少条消息,如下所示
无论如何要在不同集群节点上的不同参与者之间同步“已处理列表”?这是 akka.net.cluster.sharding 最终会做的事情吗?还是我在做一些完全没有意义的事情?
powershell - 为什么从 PowerShell 调用 F# 代码时会出现 MissingMethodException?
我正在尝试使用 PowerShell 调用一些使用 Akka.Net 演员的 F# 代码。
F# 代码在单元测试和从 F# 解释器运行时工作正常,但是当我从 PowerShell cmdlet 调用相同的代码时,我得到以下异常:
我尝试[Nessos.FsPickler.BinarySerializer]::new.OverloadDefinitions
在该 PowerShell 会话中运行以检查 PS 虽然可用的方法,但我得到:
我注意到的第一件事是 PowerShell 显示的版本采用 FSharpOption[bool] 而不是 FSharpOption[Boolean]。我尝试修改 Akka.FSharp 代码以明确传递一个选项,但这似乎没有帮助。
我正在使用 FSharp.Core 4.0.0.1(其他链接建议 3.0 有问题)。
有没有人见过类似的东西?
即使是关于在哪里寻找问题的建议也会有所帮助,我不确定问题是出在 PowerShell、F# 还是 Akka.Net 上。
lucene.net - 使用 Akka.Cluster 进行分布式 Lucene.net 搜索(分片?)?
构建一个分布在集群中多个节点上的 Web 应用程序,我想探索我们是否可以使用 Lucene.net 进行内容搜索(不是全文搜索,而是数据查询)。
从我所见,构建一个基于 Akka.net 的 Actors 集群用于索引/搜索可能并不难……但是实现 Elasticsearch 中使用的一些功能也很好,特别是在节点之间移动分片,复制分片取决于拓扑......等。
如果我们向其中一个索引/搜索节点发布“索引此内容”消息,并且该节点出现故障,则该缓存将丢失。另一方面,如果一个节点收到消息,而已经索引内容的节点返回,它将被复制。
因此,我认为 Lucene.net 索引需要不断地整理。但是怎么做?
c# - Akka.NET TestKit 出现超时错误
我正在使用 NUnit 进行测试。我究竟做错了什么?
我收到此错误:
失败:等待 CloudBackupActors.Messages.ZipMessage 类型的消息时超时 00:00:03
这就是我在 NUnit 的控制台输出中得到的。收到:ZipMessage for some path [WARNING][16/11/2015 18:46:37][Thread 0012][akka://test/user] DeadLetter from [akka://test/user] to [akka:/ /test/user]: : [akka://test/user/$b], ExistenceConfirmed=True, AddressTerminated=False>