【Java】AKKA文档(java版)—角色的引用、路径和地址
2017-05-24 00:00
302 查看
摘要: 2.5 角色的引用、路径和地址 这一章描述,角色在一个有可能是分布式的角色系统中是如何被识别和定位的。它关系到了角色系统形成的内在监管层级以及角色跨越多个网络节点之间通信的位置透明化。 上述图片显示了角色系统中几个最重要实体之间的关系,请仔细阅读。
2.5 角色的引用、路径和地址
这一章描述,角色在一个有可能是分布式的角色系统中是如何被识别和定位的。它关系到了角色系统形成的内在监管层级以及角色跨越多个网络节点之间通信的位置透明化。
上述图片显示了角色系统中几个最重要实体之间的关系,请仔细阅读。
2.5.1什么是一个角色引用?
一个角色引用是ActorRef的一个子类型,它的主要目的是为它所代表的角色提供发送消息的功能。每个角色可以通过self字段访问自己指定(本地)的引用,这个引用包括发送者引用,默认会发送所有消息给别的角色。相反的,在消息处理期间,这个角色可以访问发送者引用,通过sender方法来呈现当前的消息。
这里提供了几个基于角色系统配置的不同类型的角色引用:
角色系统中的纯本地引用被配置成不支持网络功能的,这些角色引用发送的消息不能通过一个网络发送到另一个远程的JVM。
角色系统中的本地引用在被启用时,它代表了那些在同一个JVM里的角色支持网络功能。为了发送消息给别的网络节点,这些引用包含了协议和远程地址信息。
这里有一个用于路由器的本地角色引用的子类型(即角色混合了路由器的特性)。它的逻辑结构和上述的本地引用一样,有一点不同的是,向它们发送的消息会被分发给它们的子角色中的一个。
远程角色引用表示了哪个角色可以通过远程通信到达,即发送消息给它们会透明的序列化消息,并把它们发送给远程的JVM。
这里有几个角色引用的特殊类型,它们代表了角色引用的所有实用目的:
PromiseActorRef是Promise的一个特殊代表,它被用于完成一个角色的响应。akka.pattern.ask创建这个角色引用。
DeadLetterActorRef是死亡信件服务的默认实现,定义那些Akka路径中终点是关闭或不存在的消息。
EmptyLocalActorRef是Akka查找一个不存在的本地角色路径时返回的:它等同于DeadLetterRef,不过它保留了它的路径,这样Akka可以通过网络把它发送出去,然后可以通过它的路径和别的已经存在的角色引用进行比较,这样就能得到一些已经死亡的角色。
还有一些你可能还没见过的一次性的内部实现:
有一个角色引用,它并不呈现为一个角色,它只作为一个伪管理员的根部守护者(guardian,下同),我们称它为“行走在时空泡沫中”。
第一个日志服务开启之前,事实上激起角色创建的工具是一个伪造的角色引用,它能接收日志事件并把它们直接打印到标准输出中,它就是Logging.
StandardOutLogger。
阅读原文请点击
2.5 角色的引用、路径和地址
这一章描述,角色在一个有可能是分布式的角色系统中是如何被识别和定位的。它关系到了角色系统形成的内在监管层级以及角色跨越多个网络节点之间通信的位置透明化。
上述图片显示了角色系统中几个最重要实体之间的关系,请仔细阅读。
2.5.1什么是一个角色引用?
一个角色引用是ActorRef的一个子类型,它的主要目的是为它所代表的角色提供发送消息的功能。每个角色可以通过self字段访问自己指定(本地)的引用,这个引用包括发送者引用,默认会发送所有消息给别的角色。相反的,在消息处理期间,这个角色可以访问发送者引用,通过sender方法来呈现当前的消息。
这里提供了几个基于角色系统配置的不同类型的角色引用:
角色系统中的纯本地引用被配置成不支持网络功能的,这些角色引用发送的消息不能通过一个网络发送到另一个远程的JVM。
角色系统中的本地引用在被启用时,它代表了那些在同一个JVM里的角色支持网络功能。为了发送消息给别的网络节点,这些引用包含了协议和远程地址信息。
这里有一个用于路由器的本地角色引用的子类型(即角色混合了路由器的特性)。它的逻辑结构和上述的本地引用一样,有一点不同的是,向它们发送的消息会被分发给它们的子角色中的一个。
远程角色引用表示了哪个角色可以通过远程通信到达,即发送消息给它们会透明的序列化消息,并把它们发送给远程的JVM。
这里有几个角色引用的特殊类型,它们代表了角色引用的所有实用目的:
PromiseActorRef是Promise的一个特殊代表,它被用于完成一个角色的响应。akka.pattern.ask创建这个角色引用。
DeadLetterActorRef是死亡信件服务的默认实现,定义那些Akka路径中终点是关闭或不存在的消息。
EmptyLocalActorRef是Akka查找一个不存在的本地角色路径时返回的:它等同于DeadLetterRef,不过它保留了它的路径,这样Akka可以通过网络把它发送出去,然后可以通过它的路径和别的已经存在的角色引用进行比较,这样就能得到一些已经死亡的角色。
还有一些你可能还没见过的一次性的内部实现:
有一个角色引用,它并不呈现为一个角色,它只作为一个伪管理员的根部守护者(guardian,下同),我们称它为“行走在时空泡沫中”。
第一个日志服务开启之前,事实上激起角色创建的工具是一个伪造的角色引用,它能接收日志事件并把它们直接打印到标准输出中,它就是Logging.
StandardOutLogger。
阅读原文请点击
相关文章推荐
- AKKA文档(java版)—角色
- AKKA文档(java版)—角色
- AKKA文档(java版)—角色
- AKKA文档(java版)—角色
- Akka基本概念——Actor引用、路径和地址
- java代码引用路径
- java获取服务器一些信息的方法(服务器地址/相对路径/端口/项目名字)
- Eclipse中java项目引用dll库的路径设置(System.loadLibrary()调用Dll路径问题)
- 插件项目 java打开文档路径
- java中的地址引用
- java获取服务器一些信息的方法(服务器地址/相对路径/端口/项目名字)
- Java引用与地址盲点
- JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址
- Android 开发工具学习之 配置构建路径(configure build path)、更改系统库、添加引用的库(Java和Android)
- java jar 图片 打包 引用 路径
- Java中对对象的操作是引用操作-建立Temp对象是,应该在循环里面new一个新的地址,再使用add添加到集合中去
- java引用地址传递的实例
- JAVA对象与引用、JAVA参数传递~~~转自百度文档,绕了我很久的问题终于搞明白了
- Java的各种帮助文档下载地址分享
- Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递