当我使用通用主机以外的其他东西时,我无法使用我的自定义ISubscriptionStorage实现。我不确定为什么。我得到一个例外“无法在此端点上发布 - 没有配置订阅存储。在'NServiceBus.Configure.With()'之后添加'MsmqSubscriptionStorage()'或'DbSubscriptionStorage()'。”
只有我不想使用这些选项,因为我想使用自定义选项。
这就是我失败的原因:
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;
}
}
}
答案 0 :(得分:2)
您需要在启动总线之前配置自定义订阅存储。你可以通过在流畅的初始化中包含.RunCustomAction(这里的代码)来做到这一点。