NServiceBus V3如何在WPF应用程序中配置端点

时间:2012-05-08 08:33:24

标签: nservicebus nservicebus3

尝试配置总线实例时,我收到以下错误。

  

无法生成任何端点名称,请指定您自己的名称   使用Configure.DefineEndpointName(...)

的约定

嗯所以我需要告诉总线端点消息映射。我通常使用app.config来指定它,并且它可以正常接受我的WPF应用程序,(我不是WPF的专家)。

看来app.config没有在我的WPF应用程序中读取或出现问题... 我的启动代码看起来像这样(在winforms或控制台应用程序中工作正常)

        Bus = Configure.With()
            .AutofacBuilder(container)
            .XmlSerializer()
            .MsmqTransport().IsTransactional(true).PurgeOnStartup(false)
            .UnicastBus().ImpersonateSender(false).LoadMessageHandlers()
            .CreateBus()
            .Start(); 

任何建议......

最终我希望集中存储端点映射的消息,以便所有桌面应用程序都可以在启动时读取它,即。所有客户端都可以访问的中央数据库。 如何以这种方式配置总线的一个例子将不胜感激。

2 个答案:

答案 0 :(得分:3)

只是添加到上面接受的答案:调用方法的顺序很重要。在我的情况下,我无法使DefineEndpointName()工作,除非它直接在Configure.With()之后

      Bus = Configure.With()
            .DefineEndpointName("WPFSubscriber")
            .DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("MyMessages"))
            .Log4Net()
            .DefaultBuilder()
            .XmlSerializer()
            .MsmqTransport()
            .IsTransactional(true)
            .PurgeOnStartup(false)
            .UnicastBus().
            ImpersonateSender(false)
            .LoadMessageHandlers()
            .CreateBus()
            .Start();

答案 1 :(得分:1)

根据错误,只需将其添加到初始化中:

  Bus = Configure.With()
        .AutofacBuilder(container)
        .DefineEndpointName("ENDPOINTNAME")
        .XmlSerializer()
        .MsmqTransport().IsTransactional(true).PurgeOnStartup(false)
        .UnicastBus().ImpersonateSender(false).LoadMessageHandlers()
        .CreateBus()
        .Start();

这也将成为您的输入队列名称。