加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 收到特定邮件时我们从哪里获得发件人演员?

发布时间:2020-12-16 18:55:17 所属栏目:安全 来源:网络整理
导读:每当actor在 scala中收到消息时,我们都可以使用关键字’sender’来访问actor的发送者,该关键字是trait AbstractActor的对象. 我的问题是,每当收到邮件时,这个“发件人”如何变得可访问. 而且,我们是否可以覆盖此实现,其中还有一些其他数据也可以访问,例如ipa
每当actor在 scala中收到消息时,我们都可以使用关键字’sender’来访问actor的发送者,该关键字是trait AbstractActor的对象.

我的问题是,每当收到邮件时,这个“发件人”如何变得可访问.

而且,我们是否可以覆盖此实现,其中还有一些其他数据也可以访问,例如ipaddress,数据来自的端口.

据我所知,你无法从消息来源的地方获取ipaddress和端口..有没有办法从这个’发送者’对象中获取发件人和端口号的ipaddress?

谢谢您的帮助.

解决方法

(你真的没说哪个演员,所以我假设Akka的答案也没关系)

sender方法为您提供在发送站点隐式或明确拾取的ActorRef:如果您使用!在一个actor中,它的隐式val self:找到并使用了ActorRef.如果该发件人与收件人位于不同的ActorSystem中,即它是远程邮件发送,则发件人引用将包含回复所需的所有信息,只需查看其路径:

val s = sender    // Actor[akka://<system>@<host>:<port>/user/path/to/actor]
val p = s.path    // akka://<system>@<host>:<port>/user/path/to/actor
val a = p.address // akka://<system>@<host>:<port>
val host = a.host // Some(<host>),where <host> is the listen address as configured for the remote system
val port = a.port // Some(<port>),where <port> is the actual listen port of the remote system

因此,简而言之,sender.path.address.host(以及模拟端口)应该可以满足您的需求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读