NServiceBus未创建RabbitMQ队列



我遇到一个问题,NServiceBus无法自动创建所有队列。

如果我运行任何一个端点(不包括mvc web客户端),我会得到以下错误。(端点已使用ServiceMatrix生成)

2015-04-23 10:50:12.241错误NServiceBus此端点无法请与ServiceControl后端联系以报告端点信息。您已经在端点中安装了ServiceCont-rol插件。但是,请确保Particular ServiceControl服务安装在此计算机上,或者如果在不同的计算机,然后确保端点的app.config/web.config,AppSettings具有适当设置的以下密钥:ServiceControl/队列。例如:其他详细信息:{0}NServiceBus。单播。排队。QueueNotFoundException:的Exchange收件人不存在--->RabbitMQ。客户例外情况。AlreadyClosedException:已关闭:AMQP操作中断:AMQP关闭原因,由对等,代码=404,文本="NOT_FOUND-无交换vhost'/'中的'special.servicecontrol',classId=60,methodId=40,cause=在RabbitMQ。客户Impl。ModelBase。WaitForConfirms(时间跨度超时,布尔&timedOut)。。。

所以似乎没有创建particular.servicecontrol。然而,其余的队列确实已创建。

如果我运行web项目,我还会得到一个异常:{"无法访问已处理的对象。\r\n对象名称:'CommonObjectBuilder'。"}。此错误发生在"Bus.Create(config)"上,并且没有创建队列。

if (Debugger.IsAttached)
{   
config.UsePersistence<InMemoryPersistence>();
config.EnableInstallers();
}
var bus = Bus.Create(config);

如果我手动将particular.servicecontrol添加到队列中,所有错误都会消失。

所以最终我的错误基本上是没有更新我的ServiceControl以使用RabbitMQ。

发生这种情况时,NServiceBus不会很好地失败,并显示正确的错误消息。实际上,ServiceControl负责创建特定的.ServiceControl队列,当该队列丢失时,总线本身的所有地狱都会崩溃。

然而,它并不像Multi Transport安装文档中所讨论的那样简单。简言之,虽然NSB5与RabbitMQ v2.1.2(最新稳定版本)配合使用,但ServiceControl二进制文件需要v1.1.5。因此,必须从"C:\Program Files(x86)\Specific Software\ServiceControl"中的"RabbitMQ.Client v3.2.1"one_answers"Rabbit MQ v2.1.2"nuget包复制二进制文件,否则将获得

传输配置失败。无法解析类型'NServiceBus。RabbitMQ,NServiceBus。运输。来自设置的RabbitMQ"TransportType"。确保组件存在并且该类型在设置中正确定义

为ServiceControl运行RabbitMQ安装时。

我在这里找到了解决方案。

最新更新