[翻譯]squbs官網(wǎng)之16 Actor注冊(cè)

概述

Actor注冊(cè)提供了squbs應(yīng)用一個(gè)簡(jiǎn)單的方法發(fā)送/接收消息給squbs well-known actor抡四,特別是跨cube。這在cube之間提供了一個(gè)額外的抽象層, 允許actor在不了解其它actor的情況下找到它們恨闪。actor注冊(cè)也可以作為一個(gè)門面,可以管理訪問控制,安全性帚湘,跨模塊的超時(shí),甚至模擬非actor 系統(tǒng)作為外部actor 甚淡。

概念

  • Well-known actor是在Unicomplex和Cube引導(dǎo)章節(jié)描述的大诸,通過squbs-meta.conf 在cube注冊(cè)的actor。
  • ActorLookup API 用于發(fā)送/接收消息給well-known actor。
  • ActorRegistry是一個(gè)共用的門面actor资柔,保有所有well-known actor 信息焙贷。

Well-Known Actor

Squbs well-known actor定義在 META-INF/squbs-meta.conf 中的squbs-actors節(jié)。actor 注冊(cè)繼承了該注冊(cè), 并提供了進(jìn)一步的元數(shù)據(jù)(描述此actor可能使用并返回消息類型)

  • class-name: actor類名
  • name: actor注冊(cè)名
  • message-class: 請(qǐng)求/響應(yīng)消息類型
cube-name = org.squbs.TestCube
cube-version = "0.0.5"
squbs-actors = [
    {
      class-name = org.squbs.testcube.TestActor
      name = TestActor
      message-class = [
        {
          request = org.squbs.testcube.TestRequest
          response= org.squbs.testcube.TestResponse
        }
        {
          request = org.squbs.testcube.TestRequest1
          response= org.squbs.testcube.TestResponse1
        }
      ]
    }
]

Scala API和示例

  • 發(fā)送消息 (!/?/tell/ask)給請(qǐng)求消息類類型注冊(cè)為"TestRequest"的actor
scala
  implicit val refFactory : ActorRefFactory = ...
  ActorLookup ! TestRequest(...)
  • 發(fā)送消息 (!/?/tell/ask)給請(qǐng)求消息類類型注冊(cè)為"TestRequest"且響應(yīng)消息類類型為"TestResponse"的actor
scala
  implicit val refFactory : ActorRefFactory = ...
  ActorLookup[TestResponse] ! TestRequest(...)
  • 發(fā)送消息 (!/?/tell/ask)給注冊(cè)名為"TestActor"且請(qǐng)求消息類類型為"TestRequest"的actor
scala
  implicit val refFactory : ActorRefFactory = ...
  ActorLookup("TestActor") ! TestRequest(...)
  • 發(fā)送消息 (!/?/tell/ask)給注冊(cè)名為"TestActor"贿堰、請(qǐng)求消息類類型為"TestRequest"且響應(yīng)消息類類型為"TestResponse"的actor
scala
  implicit val refFactory : ActorRefFactory = ...
  ActorLookup[TestResponse]("TestActor") ! TestRequest(...)
  • 解析響應(yīng)消息類類型注冊(cè)為"TestResponse"的actorRef
scala
  implicit val refFactory : ActorRefFactory = ...
  implicit val timeout : Timeout = ...
  ActorLookup[TestResponse].resolveOne
  • 解析注冊(cè)名為"TestActor"的actorRef
scala
  implicit val refFactory : ActorRefFactory = ...
  implicit val timeout : Timeout = ...
  ActorLookup("TestActor").resolveOne
  • 解析注冊(cè)名為"TestActor"辙芍,響應(yīng)消息類類型為"TestReponse"的actorRef
scala
  implicit val refFactory : ActorRefFactory = ...
  implicit val timeout : Timeout = ...
  ActorLookup[TestReponse]("TestActor").resolveOne
  • 解析注冊(cè)名為"TestActor",請(qǐng)求消息類類型為"TestRequest"的actorRef
scala
  implicit val refFactory : ActorRefFactory = ...
  implicit val timeout : Timeout = ...
  ActorLookup("TestActor").resolveOne

響應(yīng)類型

通過 ActorLookup 響應(yīng)類型發(fā)現(xiàn) (當(dāng)提供響應(yīng)類型時(shí)) 發(fā)現(xiàn)的actor 的響應(yīng)類型在查找的結(jié)果中保持羹与。雖然程式化的響應(yīng)類型對(duì)于tell 或!不太重要沸手,但是在ask 或 ?上變得很重要。ask的返回類型通常是Future[Any]注簿。然而ask 或 ?在ActorLookup上契吉, 返回類型是查找到的返回類型。如果使用響應(yīng)類型 T 進(jìn)行查找, 您將得到Future[T]如下所示诡渴。

// In this example, we show full type annotation. The Scala compiler is able
// to infer the type if you just pass one side, i.e. the type parameter at
// ActorLookup, or the type annotation on the val f declaration.

val f: Future[TestResponse] = ActorLookup[TestResponse] ? TestRequest(...)

錯(cuò)誤處理

如果想要的actor系統(tǒng)中不存在或未注冊(cè)捐晶,不像actorSelection(將像死信發(fā)送消息),ActorLookup將返回ActorNotFound妄辩。

監(jiān)控

為每一個(gè)well-known actor創(chuàng)建JMX Bean惑灵。它名為:

org.squbs.unicomplex:type=ActorRegistry,name=${actorPath}

依賴

為了使用actor注冊(cè),請(qǐng)?zhí)砑尤缦乱蕾嚕?/p>

"org.squbs" %% "squbs-actorregistry" % squbsVersion
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眼耀,一起剝皮案震驚了整個(gè)濱河市英支,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哮伟,老刑警劉巖干花,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異楞黄,居然都是意外死亡池凄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門鬼廓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肿仑,“玉大人,你說我怎么就攤上這事碎税∮任浚” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵雷蹂,是天一觀的道長(zhǎng)伟端。 經(jīng)常有香客問我,道長(zhǎng)萎河,這世上最難降的妖魔是什么荔泳? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮虐杯,結(jié)果婚禮上玛歌,老公的妹妹穿的比我還像新娘。我一直安慰自己擎椰,他們只是感情好支子,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著达舒,像睡著了一般值朋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巩搏,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天昨登,我揣著相機(jī)與錄音,去河邊找鬼贯底。 笑死丰辣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的禽捆。 我是一名探鬼主播笙什,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼胚想!你這毒婦竟也來了琐凭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤浊服,失蹤者是張志新(化名)和其女友劉穎统屈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牙躺,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸿吆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了述呐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惩淳。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乓搬,靈堂內(nèi)的尸體忽然破棺而出思犁,到底是詐尸還是另有隱情,我是刑警寧澤进肯,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布激蹲,位于F島的核電站,受9級(jí)特大地震影響江掩,放射性物質(zhì)發(fā)生泄漏学辱。R本人自食惡果不足惜乘瓤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望策泣。 院中可真熱鬧衙傀,春花似錦、人聲如沸萨咕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)危队。三九已至聪建,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茫陆,已是汗流浹背金麸。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留簿盅,地道東北人钱骂。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挪鹏,于是被迫代替她去往敵國(guó)和親见秽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容