1

我已将 NServiceBus 配置为使用 Sql Server。

    Configure.With()
        .AutofacBuilder(container)
        .UseTransport<SqlServer>("aureus")
        .InMemorySubscriptionStorage()
        .UnicastBus()
        .DisableTimeoutManager()
        .CreateBus()
        .Start();

当我在控制器中发送消息时。

this._bus.Send(new BillClient { Value = "testing." });

我得到了错误。无法将消息发送到地址:[queue] 无效的对象名称“队列”。

我的配置如下:

  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Assembly="Aureus.Messages" Namespace="Aureus.Messages" Endpoint="queue"/>
    </MessageEndpointMappings>
  </UnicastBusConfig>

我错过了什么?我不知道是否需要运行脚本/或初始化队列?

4

2 回答 2

1

我不是专家,但我必须使用 ConnectionString 定义作为 .UseTransport() 的参数,如下所示。在您的帖子中,不清楚“aureus”对 NServiceBus 软件意味着什么。

.UseTransport<SqlServer>(ConnectionString())


string ConnectionString()
{
    return "NServiceBus/Transport\" connectionString=\"Data Source=.\\SQLEXPRESS;Initial    Catalog=nservicebus;Integrated Security=True";
}

我也无法将配置文件中的 ConnectionString 名称用作参数。这是我的配置文件 fyi 的部分:

<connectionStrings>
  <!-- Message Bus ********************************************** -->
<add name="NServiceBus/Transport" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=nservicebus;Integrated Security=True" />
  <!-- Message Bus ********************************************** -->
</connectionStrings>

此外,对于我的配置文件中的 Endpoint,我必须使用 NServiceBus 消息处理程序类的命名空间。这是我的配置文件的端点部分:

<UnicastBusConfig ForwardReceivedMessagesTo="audit">
    <MessageEndpointMappings>
    <!--Note - Endpoint must specify the Namespace of the server-->
    <add Assembly="My.Messages.Assemblyname" Namespace="My.Messages.AssemblyNamespace" Endpoint="MyMessageHandlerAssy.Namespace" />
    </MessageEndpointMappings>
</UnicastBusConfig>

希望对您有所帮助。

于 2013-10-23T13:49:59.620 回答
1

代替

.Start()

你需要

.Start(() => Configure.Instance.ForInstallationOn<Windows>().Install());

启动队列的初始化。

于 2013-10-22T11:41:54.747 回答