使用 Akka 以编程方式获取临时端口

2024-01-20

如果我在 Akka 中将 ActorSystem 配置为使用临时 tcp 端口(更具体地说,我将 http 端口配置为 0),有没有办法在 ActorSystem 启动后以编程方式获取此端口?

任何使用 actorOf 创建 Actor 的尝试,然后打印出 Actor 路径都会显示本地引用的 Actor。此外,我尝试在事件流上注册 RemoteLifeCycleEvent 侦听器,但这只能在服务器启动后才能完成,因此会错过 RemoteServerStarted 事件。


干得好:

class MyExtensionImpl(system: ExtendedActorSystem) extends Extension {
  def address = system.provider match {
    case rarp: RemoteActorRefProvider => rarp.transport.address
    case _ => system.provider.rootPath.address
  }
}

object MyExtension extends ExtensionKey[MyExtensionImpl]

val address = MyExtension(system).address
val port = address.port.getOrElse(sys.error("not a remote actor system"))

(请注意,此代码适用于 Akka 2.0.x。在 2.1.x 中,您可以避免经历RemoteActorRefProvider通过使用system.provider.getDefaultAddress)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Akka 以编程方式获取临时端口 的相关文章

随机推荐

  • 如何在 GCC 命令行上定义字符串文字?

    在 GCC 命令行上 我想定义一个字符串 例如 Dname Mary https gcc gnu org onlinedocs gcc Preprocessor Options html index D 1 然后在源代码中 我想要print
  • 链接下载图像而不是查看图像

    我需要向网站访问者提供下载原始高分辨率图像的链接 如果我只是使用 href image jpg 链接到图像 浏览器就会显示该图像 如何让浏览器下载它 我正在使用亚马逊 S3 来服务器这些图像 如果这需要在图像上设置特殊的标头 我确信这是可能
  • 带有 C++ DLL 的 Excel-VBA 有时会崩溃

    我制作了非常简单的 c dll 只有一个函数 int DLL EXPORT stdcall foo double source return 0 我正在尝试这样使用它 Option Explicit Private Declare PtrS
  • 在 iOS 上从内存数据流播放音频

    我正在将音频库移植到 iOS 允许播放回调提供的音频流 用户提供返回原始 PCM 数据的回调 我需要播放该数据 此外 该库必须能够同时播放多个流 我想我需要使用 AVFoundation 但似乎 AVAudioPlayer 不支持流式音频缓
  • 使用 hibernate 事件侦听器更新其他实体中的非规范化值

    我们有一个基于休眠的应用程序 该应用程序已经使用拦截器来触发审计跟踪的创建 它通过挂钩 beforeTransactionComplete 机制来实现此目的 将每个实体的最终状态复制到审核表中 所有实体都有一个版本号 当发生更改时该版本号会
  • Android:File() 的资产文件夹路径?

    我的项目的资产文件夹中有一些文件 我想列出它们 所以我将其放入我的代码中 File dir new File com packagename assets fonts File fileList dir listFiles 我应该采取哪条路
  • Selenium WebDriver 默认使用什么配置文件?

    Selenium WebDriver 又名 Selenium 2 从哪里获取打开 FirefoxDriver 时使用的匿名配置文件 如果它使用 Firefox 的默认值 appdata roaming mozilla firefox pro
  • 如何在 linq to xml 中交换两个 XML 元素

    我想交换两个 xml 元素 我该怎么做呢 这是代码 我尝试了解决方案here https stackoverflow com questions 3695806 linq to xml what is the most effective
  • 在Django中引用View/Template中的多个Model

    我正在使用 Python Django 迈出第一步 并在一个 Django 项目中编写了一个包含多个 Django 应用程序的示例应用程序 现在我添加了另一个名为 仪表板 的应用程序 我想在其中显示来自不同应用程序的数据 目前我仍然使用这个
  • 如何在Windows中使用pygame打开相机?

    我想在 Windows 7 机器上使用 pygame 模块用 Python 打开相机 但它不起作用 我以前用过 dev video0 这是Linux中的读取设备 pygame 文档仅展示了如何在 Linux 中打开相机设备 我使用的是 py
  • 在 React 中测试 API 调用 - 状态未更新

    我想测试组件中的 API 调用后我的状态是否更新 我有一个方法可以说method1 在该方法中 它调用fetch并将状态设置为结果 方法如下 method1 gt if this state state1 fetch api then re
  • 使用 URL 参数自动填充表单并自动提交

    我想使用 URL 参数自动填充以下表单 例如使用如下 URL example co uk example php acct wirelesslogicde pwd jenkins 如果可能的话 我也希望自动提交 我该怎么做
  • 如何判断TBucketList的桶数

    我一直在使用 TBucketList 和 TObjectBucketList 来满足我的所有哈希需求 但从未尝试过切换存储桶的数量 我隐约记得这在数据结构类中意味着什么 但是有人可以详细说明 Delphi 中这个特定类的细微差别吗 The
  • 是否保证handle_info在超时0的情况下在init之后立即执行?

    我收到一个奇怪的错误报告 这让我认为在 gen server 初始化之前正在执行一些调用 这是初始化代码 init ResourceId gt process flag trap exit true ok not initialized R
  • 如何使用任何库在Python中将RTF字符串转换为纯文本[重复]

    这个问题在这里已经有答案了 我想在不使用正则表达式的情况下将 rtf 字符串转换为纯文本 rtfstring rtf1 ansi ansicpg1252 deff0 deflang1033 fonttbl f0 Arial colortbl
  • 如何使用curl 通过代理模拟来自Firefox 的请求?

    特别是 当我将 Firefox 设置为使用 https 流量代理时 我尝试复制 Firefox 的行为 根据我的测试 Firefox 似乎向代理发送 CONNECT 请求 而以下curl 命令直接向代理发送 GET curl proxy b
  • 将列表框的选定值显示为标签 - 多个值

    我有一个名为 lstPTLNameDHOD 的列表框 其中有多个 PTL 名称 可以使用 Ctrl 键选择这些名称 我想在标签中显示选定的姓名 或者以某种方式显示提交表单的人可以看到他们提交表单的确切对象 我的问题是我只能在标签上显示一个名
  • Python:使用另一个大字典更新一个大字典

    我正在尝试使用另一个字典中的值来更新大型字典的某些值 其中它们具有相似的键 相同的日期但格式不同 我当前使用的流程太慢 我想减少瓶颈 这是我当前的解决方案 它将更新的字典写入文件 from dateutil import parser Fi
  • 在 Node.js 中共享对象并避免全局变量

    在下面的代码片段中共享数据库连接的最合适的方式是什么 db变量 与我的路由器 控制器 无需转动db变量变成全局变量 var mongo require mongoskin db mongo db config db adress app u
  • 使用 Akka 以编程方式获取临时端口

    如果我在 Akka 中将 ActorSystem 配置为使用临时 tcp 端口 更具体地说 我将 http 端口配置为 0 有没有办法在 ActorSystem 启动后以编程方式获取此端口 任何使用 actorOf 创建 Actor 的尝试