NService Bus:"无法设置key的值:ScaleOut.UseSingleBrokerQueue."

Nik*_*lar 1 nservicebus

使用nservicebus.structuremap时出现此类错误.这是我的代码.

EndPointConfig.cs

namespace NSBus.Server
{
using NServiceBus;

/*
    This class configures this endpoint as a Server. More information about how to configure the NServiceBus host
    can be found here: http://particular.net/articles/the-nservicebus-host
*/
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, UsingTransport<Msmq>, IWantCustomInitialization
{
    public static IBus Bus { get; private set; }

    public void Init()
    {
        ConfigureIocTool();
    }

    private static void ConfigureIocTool()
    {
        var container = new Container(y => y.Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.AssemblyContainingType<SanelibRegistry>();
            scan.AssemblyContainingType<CommonRegistry>();
            scan.AssemblyContainingType<CoreRegistry>();
            scan.WithDefaultConventions();
            scan.LookForRegistries();
        }));

        Bus = Configure.With()
            .StructureMapBuilder(container)
            .MsmqSubscriptionStorage()
            .PurgeOnStartup(false)
            .UnicastBus()
            .ImpersonateSender(false)
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());           
    }    
}
Run Code Online (Sandbox Code Playgroud)

}

这段代码运行成功,但一段时间后我得到了错误.

Nik*_*lar 5

由于我使用的是NServiceBus.Host,因此我不需要在端点配置中创建总线:

我的初始化变成这样:由于AsA_Server角色是beign使用的,它已经将启动时的清除队列设置为false,使用单播总线等.总线将被创建并将在所有消息处理程序中通过DI提供.

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, UsingTransport<Msmq>, IWantCustomInitialization
{
    public void Init()
    {
        var container = new Container(y => y.Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.AssemblyContainingType<SanelibRegistry>();
            scan.AssemblyContainingType<CommonRegistry>();
            scan.AssemblyContainingType<CoreRegistry>();
            scan.WithDefaultConventions();
            scan.LookForRegistries();
        }));

        Configure.With()
            .StructureMapBuilder(container)
            .MsmqSubscriptionStorage();
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅:http: //particular.net/articles/the-nservicebus-host(部分内置配置)以及 http://particular.net/articles/containers

此外,对于订阅存储,建议使用RavenDB或NHibernate(sql storage)进行生产,而不是msmq.

希望这可以帮助,

Nikunj Balar