我已将NServiceBus配置为使用Sql Server。
Configure.With()
.AutofacBuilder(container)
.UseTransport<SqlServer>("aureus")
.InMemorySubscriptionStorage()
.UnicastBus()
.DisableTimeoutManager()
.CreateBus()
.Start();
当我在控制器中发送消息时。
this._bus.Send(new BillClient { Value = "testing." });
我收到错误。 无法向地址发送消息:[queue] 无效的对象名称'queue'。
我的配置如下:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Aureus.Messages" Namespace="Aureus.Messages" Endpoint="queue"/>
</MessageEndpointMappings>
</UnicastBusConfig>
我错过了什么?我无法确定是否需要运行脚本/或初始化队列?
答案 0 :(得分:1)
而不是
.Start()
你需要
.Start(() => Configure.Instance.ForInstallationOn<Windows>().Install());
开始排队。
答案 1 :(得分: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>
希望对你有所帮助。