NServiceBus翻譯之持久化技術(一):Persistence In NServiceBus

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

Last Updated: Dec 03, 2012 08:24PM IST

NserviceBus中有很多特徵都要求資訊的持久化,主要是timeouts,Sagas,以及subscription的儲存。

NserviceBus中有四種持久化技術:

1.RavenDB

2.NHibernate

3.In Memory

4.MSMQ

關於RavenDB的安裝可以看hereand怎麼樣連線到RavenDB參見here.

Using NHibernate for persistence

NserviceBus3.0開始支援NHibernate持久化技術,其位於單獨的程式集中,更多資訊參加Readmore

What's available?

下表總結了哪些是可以獲得的,以及如何配置他們:

InMemory

RavenDB

NHibernate

MSMQ

Timeout

Not supported begining version 3.3,0

Subscription

Saga

Gateway

Distributor

Second Level Retry

Fault Management

Notifications

假如self hosting,那麼你可以根據你的需求任意配置持久化技術,舉一個例子,假如你想要儲存subscription在記憶體中,timeouts在RavenDB中,那麼可以使用以下程式碼:

static void Main()
{
    Configure.With()
        .Log4Net()
        .DefaultBuilder()
        .XmlSerializer()
        .MsmqTransport()
            .IsTransactional(true)
            .PurgeOnStartup(false)
           .InMemorySubscriptionStorage()
        .UnicastBus()
            .ImpersonateSender(false)
            .LoadMessageHandlers()
        .UseRavenTimeoutPersister()
        .CreateBus()
        .Start(() =>
            Configure.Instance.
               ForInstallationOn<NServiceBus.
                   Installation.Environments.Windows>().Install());
}

當使用NServiceBus.Host.exe,有現成的profile你可以利用,下表展示了每種預建profile的預設配置採用的是何種持久化技術。 此外,你可以覆蓋這些預設的配置,如何覆蓋參考

hereandhere.

下表總結了應用在內建的profile中的不同的持久化技術,不過在配置一個持久化技術之前首先檢查一下是否有別的儲存被使用,以避免覆蓋了使用者的配置。

InMemory

RavenDB

NHibernate

MSMQ

Timeout

Lite

Integration/Production

Keeps a queue for management

Subscription

Lite

Integration/Production

Saga

Lite

Integration/Production

Gateway

Lite

MultiSite

Distributor

Distributor

Second Level Retry

Uses Timeout queue

Fault Management

Lite

Integration/Production

Notifications

Lite/Integration/Production

Default Persisting Technology

AsA_Server將會啟用Timeout manager,這個角色並不明確決定使用哪種持久化技術,預設的timeout manager的持久化技術是RavenDB。

類似於AsA_Server這個角色,不同的profile將會啟用不同的NServiceBus特徵,而不需要明確地配置持久化技術,更多的關於各種profile的資料參考here.

相關文章