NServiceBus翻譯之持久化技術(三):Using RavenDB In NServiceBus – Connecting

小弟季義欽發表於2013-08-18

Last Updated: Nov 28, 2012 10:59AM IST

從NServiceBus3.0開始,RavenDB成為了NServiceBus的機制之一,可以用於持久化timeout,Sagas,Subscriptions等資訊。

告訴NServiceBus去使用RavenDB用於持久化,只需要呼叫Configure.RavenPersistence(),它使用預設的配置,以及如下所述的規約:

1.假如沒有master node被配置,那麼NServiceBus將會認為RavenDB伺服器執行在http://localhost:8080, 同時也是RavenDB預設的URL.

2.假如有master node被配置,那麼url將會是: http://{masternode}/:8080

3. 假如一個名為 “NServiceBus.Persistence” 的連線字串被發現,那麼connectionString屬性的值將會被使用。
這樣你就可以完全控制你的終結點將會使用哪個Raven server。


假如NServiceBus檢測到任何Raven相關的儲存被使用,比如Saga, Subscription,Timeouts等,那麼上面所述將會自動為你配置好,所以本質上你不需要明確地去配置Raven,除非你需要覆蓋預設配置。

Overriding the defaults

在一些情況下預設的配置也許對你來說不足夠好:

· 1你想要使用自己的連線字串–假如你正在為你的資料使用Raven,那麼你也許想要share連線字串,你可以通過Configure.RavenPersistence(string connectionString)簽名來實現,其告訴NServiceBus連線到字串指定的伺服器,RavenDB預設的連線字串是“RavenDB”.

· 2你想要明確一個特定資料庫名稱 – 假如你想要在程式碼中控制資料庫的名稱,而不是通過配置實現,那麼你可以使用Configure.RavenPersistence(string connectionString,string databaseName) 簽名. 這在tenantscenario下是非常有用的。

What database will be used?

在連線到Raven伺服器之後,我們需要決定使用哪個真實的資料庫。 除非我們能夠在連線字串中發現預設的資料庫,否則NServiceBus將會使用終結點名稱來作為資料庫的名稱。 所以假如你的終結點名稱是“MyServer”那麼資料庫的名稱也將會是 “MyServer”. 每個終結點都會有一個單獨的資料庫,除非你明確地去使用連線字串來覆蓋這個預設行為。 如果資料庫不存在,RavenDB會自動建立。

關於終結點名稱這個概念的詳細的解釋可以在這裡找到:hereandin thisFAQentry.

Can I use the IDocumentStore used byNServiceBus for my own data?

不行,Raven客戶端是被整合到了NServiceBus程式集中,所以假如你為了自己的目的要去使用Raven,那麼你需要去參考Raven客戶端,以及設定你自己的文件儲存。

How do I look at the data?

只需要開啟瀏覽器,輸入Raven伺服器的URL即可,這將會開啟the Raven DBmanagementstudio.

相關文章