2013-06-30 58 views
3

如何在erlang中存儲mongodb連接池。Erlang存儲池中的mongodb連接

功能於一體

我創建數據庫連接

Replset = {<<"rs1">>, [{localhost, 27017}]}, 
Pool = resource_pool:new (mongo:rs_connect_factory (Replset), Count), 

在第二個功能我需要從池連接池。

{ok, Conn} = resource_pool:get (Pool). 

但我不能這樣做,因爲我在另一個函數中創建了池。 我嘗試使用記錄,但沒有成功(

我需要做的就是它有點全球化跨模塊什麼

回答

1

我認爲最好的解決方案是使用gen_server並將數據存儲在其狀態中。 另一種方法是使用ets表。

+0

我使用了gen_server,它現在工作) – undassa

1

幾點來引導你在正確的方向:

  • 二郎沒有全局變量的概念,綁定只能存在於一個進程中,並且該綁定對於該進程是局部的,而且,
  • 在一個進程中,沒有進程本地綁定,只有當前綁定範圍

請注意,這與大多數函數式編程風格高度一致。

要解決您的問題,您需要一個過程來跟蹤您的資源池。客戶然後調用這個過程並要求資源。然後,資源管理器可以通過監視器處理如果客戶端擁有檢出資源時死亡,應該發生什麼情況。

最簡單的入門方法是從Github處獲取devinus/poolboy並查看該代碼段。