2010-11-16 19 views
1

當我使用通用主機以外的東西時,我無法使用自定義的ISubscriptionStorage實現。我不確定爲什麼。在'NServiceBus.Configure.With()'之後添加'MsmqSubscriptionStorage()'或'DbSubscriptionStorage()',我發現「無法在此端點上發佈 - 沒有配置訂閱存儲。NServiceBus:無通用主機的自定義ISubscriptionStorage實現

只有我不想使用這些選項,因爲我想使用我的自定義選項。

這裏是我的影片失敗:

public class Program 
{ 
    static void Main() 
    { 
     var bus = Configure.With() 
      .CustomConfigurationSource(new UserConfigurationSource() 
       .Register(() => new MsmqTransportConfig()) 
       .Register(() => new UnicastBusConfig())) 
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqTransport() 
      .IsTransactional(true) 
      .UnicastBus() 
      .CreateBus() 
      .Start(); 

     Configure.Instance.Configurer.ConfigureComponent<StreamSubscriptionStorage>(ComponentCallModelEnum.Singleton); 

     Console.WriteLine("This will publish IEvent and EventMessage alternately."); 
     Console.WriteLine("Press 'Enter' to publish a message.To exit, Ctrl + C"); 

     bool publishIEvent = true; 

     while (Console.ReadLine() != null) 
     { 
      var eventMessage = publishIEvent ? bus.CreateInstance<IEvent>() : new EventMessage(); 

      eventMessage.EventId = Guid.NewGuid(); 
      eventMessage.Time = DateTime.Now.Second > 30 ? (DateTime?)DateTime.Now : null; 
      eventMessage.Duration = TimeSpan.FromSeconds(99999D); 

      bus.Publish(eventMessage); 

      Console.WriteLine("Published event."); 

      publishIEvent = !publishIEvent; 
     } 
    } 
} 

回答

2

您需要在開始前總線配置自定義訂閱存儲。您可以通過在流暢初始化中包含.RunCustomAction(您的代碼在這裏)來實現。