当前位置: 首页 > 知识库问答 >
问题:

测试参与者发件人是本地还是远程

戚繁
2023-03-14

我需要确定消息的发送者是Akka集群中的本地行为者还是远程行为者之一。目前我找到的唯一方法是

def isLocal(sndr: ActorRef) = sndr.path.address.toString == context.system.toString

在每个节点上,路由器管理许多参与者来完成工作。工作参与者将结果发送回本地主参与者,并通过发件人引用分配新的职务。主参与者还定期向其他节点的主参与者发送结果,确保数据在不同节点的主参与者之间随机“混合”。在数据来自远程参与者的情况下,接收主机不应试图分配新的工作。它本质上是一个带有混合的岛屿方法的实现。

共有1个答案

龙景澄
2023-03-14

您可以通过扩展获得actorsystem的远程处理地址(请参见通过编程方式使用Akka获取临时端口)。这样,您可以比较地址而不是字符串,这样就不那么乏味了。

针对Ryan的观点,另一种方法是将结果信息包装在另一个信息中。当您在包装器上匹配时,您将知道它不是来自本地工作人员,然后您可以打开它,并对结果做任何需要做的事情。

def receive = {
  case NonLocalResults(results) => // do something with non-local results
  case Results(...)             => // do something with local results
  ...
}
 类似资料:
  • 例如,我有两个演员——一个家长演员和一个孩子演员。当父级收到消息时,它会产生消息中指定的尽可能多的子角色。如何测试此功能?有没有一种方法可以模拟上下文,或者其他一些方法来检查参与者的创建是否正确和数量是否正确? 更新:基于@Tim answer的解决方案 更改类别: 测试:

  • 问题内容: 我有一个json流,可以像这样: 或类似的东西 在我的Java代码中,请执行以下操作: 在第一种情况下,上述方法不起作用,因为流中只有一个元素。如何检查流是an 还是an ? 我尝试过,但是没有用。 谢谢 问题答案: 这样的事情应该做到: 这样做的好处是,只需从一次获取属性值。由于获取属性值涉及遍历哈希树或类似的树,因此对于性能(价值而言)很有用。

  • 有没有办法使用JGit确定一个分支是远程分支还是本地分支(或两者都是)?我有: 它给出: 因此,newFeatureBranch既是本地分支,也是远程分支。目前我检查ref.getName()是否包含“remotes/origin”。但是,有没有更好的方法来确定分支是远程的还是本地的?

  • 以下是在远程主机上安装PIP/BOTO的任务,这些任务在运行route53模块时不会再出现错误:

  • 问题内容: 我决定使用非常简单的算法创建简单的 isEven 和 isOdd 函数: 如果n具有某些参数,那是可以的,但是在许多情况下会失败。因此,我着手创建健壮的函数,以便在尽可能多的情况下提供正确的结果,以便仅测试javascript数字范围内的整数,其他所有结果均返回false(包括+和-无限)。注意零是偶数。 谁能看到上述任何问题?是否有更好的版本(即更准确,更快或更简洁而不被混淆)? 有