繁体   English   中英

NServiceBus未创建RabbitMQ队列

[英]NServiceBus not creating RabbitMQ queues

我有一个问题,其中NServiceBus不会自动创建所有队列。

如果运行任何端点(不包括mvc Web客户端),都会出现以下错误。 (端点已使用ServiceMatrix生成)

2015-04-23 10:50:12.241错误NServiceBus此终结点无法联系ServiceControl后端以报告终结点信息。 您已在端点中安装了ServiceCont rol插件。 但是,请确保在此计算机上安装了特定的ServiceControl服务,或者如果在另一台计算机上运行ServiceControl,则请确保端点的app.config / web.c onfig,AppSettings适当地设置了以下键:ServiceControl / Queue列。 例如:其他详细信息:{0} NServiceBus.Unicast.Queuing.QueueNotFoundException:不存在与收件人的交换--> RabbitMQ.Client.Exceptions.AlreadyClosedException:已关闭:AMQP操作被中断:AMQP关闭-原因,由对等方发起,代码= 404,文本=“ NOT_FOUND-虚拟主机'/'”中没有交换'particular.servicecontrol',classId = 60,methodId = 40,cause =在RabbitMQ.Client.Impl.ModelBase.WaitForConfirms( TimeSpan超时,布尔值和超时)...

因此,似乎没有创建specific.servicecontrol。 但是,确实创建了其余队列。

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

if (Debugger.IsAttached)
{   

    config.UsePersistence<InMemoryPersistence>();

    config.EnableInstallers();
}

var bus = Bus.Create(config);

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

因此,最终,我的主要错误是没有将ServiceControl更新为使用RabbitMQ。

发生这种情况时,NServiceBus不会以正确的错误消息很好地失败。 实际上,ServiceControl负责创建specific.servicecontrol队列,并且当该队列丢失时,总线本身中的所有地狱都将松散。

但是,它并不像Multi Transport安装文档中所讨论的那样简单。 简而言之,虽然NSB5与RabbitMQ v2.1.2(最新的稳定版)一起使用,但是ServiceControl二进制文件需要v1.1.5。 因此,必须从“ RabbitMQ.Client v3.2.1”和“ RabbitMQ v2.1.2” nuget程序包中复制二进制文件到“ C:\\ Program Files(x86)\\ Special Software \\ ServiceControl”中,否则会得到

传输配置失败。 无法通过设置“ TransportType”解析类型“ NServiceBus.RabbitMQ,NServiceBus.Transports.RabbitMQ”。 确保程序集存在并且该类型在设置中正确定义

在为ServiceControl运行RabbitMQ的安装时。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM