Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nservicebus N服务总线:自定义ISubscriptionStorage实现,无通用主机_Nservicebus - Fatal编程技术网

Nservicebus N服务总线:自定义ISubscriptionStorage实现,无通用主机

Nservicebus N服务总线:自定义ISubscriptionStorage实现,无通用主机,nservicebus,Nservicebus,当我使用非通用主机时,我无法使用自定义ISubscriptionStorage实现。我真的不知道为什么。“无法在此终结点上发布-尚未配置订阅存储。请在“NServiceBus.Configure.With()”之后添加“MsmqSubscriptionStorage()”或“DbSubscriptionStorage()”异常。” 只是我不想使用这些选项,因为我想使用我的自定义选项 以下是我失败的地方: public class Program { static void Main()

当我使用非通用主机时,我无法使用自定义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;
        }
    }
}
公共类程序
{
静态void Main()
{
var bus=Configure.With()
.CustomConfigurationSource(新用户配置源()
.Register(()=>新的MsmqTransportConfig())
.Register(()=>newunicastbusconfig())
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransaction(真)
.UnicastBus()
.CreateBus()
.Start();
Configure.Instance.Configurer.ConfigureComponent(ComponentCallModelEnum.Singleton);
WriteLine(“这将交替发布IEEvent和EventMessage。”);
Console.WriteLine(“按Enter键发布消息。按Ctrl+C键退出”);
bool publishIEvent=true;
while(Console.ReadLine()!=null)
{
var eventMessage=publishIEvent?bus.CreateInstance():new eventMessage();
eventMessage.EventId=Guid.NewGuid();
eventMessage.Time=DateTime.Now.Second>30?(DateTime?)DateTime.Now:null;
eventMessage.Duration=TimeSpan.FromSeconds(9999d);
发布(eventMessage);
Console.WriteLine(“已发布事件”);
publishIEvent=!publishIEvent;
}
}
}

启动总线之前,您需要配置自定义订阅存储。您可以通过在fluent初始化中包含.RunCustomAction(此处的代码)来实现这一点