Nservicebus端点命名

时间:2013-01-18 10:03:18

标签: c# asp.net nservicebus

我正在尝试使用NSerivceBus,尽管它主要是顺利进行,但我很难理解如何配置EndPointName。

因此,例如,在完成以下几个示例后,我设法提出了以下内容,但我所做的任何更改EndPoint名称的尝试都失败了。

所以myServer队列当前是它的名字,我想从这里命名空间:

  namespace MyServer
{
    class EndPointConfig : IConfigureThisEndpoint, AsA_Server
    {
    }
}

但是当我把[EndpointName(“AnotherQueue”)]没有任何改变时(除非它没有填满myServer队列。

我还尝试更改Global.ASAX:

public static IBus Bus { get; set; }
        void Application_Start(object sender, EventArgs e)
        {
            Bus = NServiceBus.Configure.With()
                .Log4Net()
                .DefaultBuilder()
                .DefineEndpointName("AnotherQueue")
                .XmlSerializer()
                .MsmqTransport()
                    .IsTransactional(false)
                    .PurgeOnStartup(false)
                .UnicastBus()
                    .ImpersonateSender(false)
                .CreateBus()
                .Start();
        }

但同样,它没有用。

我正在通过查看mmc并检查那里排队的消息来测试它。

最后我尝试改变web.config

<configSections>
        <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NserviceBus.Core"/>
        <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
    </configSections>

    <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

    <UnicastBusConfig>
        <MessageEndpointMappings>
            <add Messages="MyMessage" Endpoint="AnotherQueue"></add>
        </MessageEndpointMappings>
    </UnicastBusConfig>

仍然没有。

有人能帮忙吗?我仍然试图解决这个问题(这对我来说是一项新技术)所以如果我对这个问题提出质疑那么我就会失职。

提前致谢 莱克斯

1 个答案:

答案 0 :(得分:6)

夫妻俩:

我不是百分百肯定,但我不认为您想要使用IConfigureThisEndpoint,如果您在Web应用程序中托管,则不要使用AsA_Server。我相信您在Application_Start中拥有的配置代码就是您所需要的。其他配置方法适用于您在NSB自己的进程中托管(作为Windows服务或控制台)。

尝试将DefineEndPointName("AnotherQueue")作为NServiceBus.Configure.With()之后的第一个命令。这是我设置它的方式并且它有效,我相信With()之后命令的顺序很重要,并且可以无声地失败(我认为这将在未来的版本中解决)。

根据您要完成的任务,您可能根本不需要单播总线配置。这用于定义客户端端的端点 - 换句话说,用它来定义应用想要与之通信的端点。

最后,在运行Web应用程序时使用调试窗口查找可能出错的线索。 NSB在调试模式下生成许多非常有用的日志信息,所有这些信息都应该发送到调试窗口。可能是您的应用程序没有权限创建队列,或者沿着这些行。一旦我发现了这个问题,就要排除很多“学习曲线问题”的问题。变得容易多了。