2015-07-01 18 views
5

我建立使用Spray.io其坐在用阿卡內置核心應用程序之上的Web服務。傳遞變量繞了Spray.io應用

當我在收到請求時,它獲取通過噴霧路線這反過來將發送(使用告訴)的請求到其處理該請求並返回使用該請求上下文的響應演員處理。

我認證&授權初始路徑內的用戶和該認證/授權返回一個包含在用戶數據的用戶對象。

我需要能夠在各點的核心阿卡應用程序中訪問該用戶對象。我不想將它作爲參數傳遞給每個發送給演員的消息(case class),因爲這看起來很混亂,因爲有時我會將它傳遞給演員,以便它可以傳遞給另一個演員。是否有更好的/推薦的方法讓這個對象可用於系統中的其他角色?它可以被附加到請求上下文本身,還是那種不好的做法?

感謝

+0

是akka廣播你在找什麼? http://doc.akka.io/docs/akka/snapshot/scala/routing.html#Broadcast_Messages –

+1

@ThiagoPereira它更多的是通過額外的元數據_together_與消息 – sap1ens

+0

@ThiagoPereira - 它可能工作,但並不完全感覺正確的方式 - 向所有人廣播......你能播放的消息是一個變量,例如一個case class? – fatlog

回答

2

如果你想要做的是避免在您創建測試用例類的實例,以通過認證信息的樣板,你可以一個隱含參數列表添加到他們:

scala> implicit val i = 1 
i: Int = 1 

scala> case class X(s: String)(implicit val y: Int) 
defined class X 

scala> val x = X("foo") 
x: X = X(foo) 

scala> x.y 
res4: Int = 1 

你還在通過與每一個消息的認證信息,並不能使用模式進行第二參數列表匹配,但根據你所要完成它可能工作是什麼。