2

我们正在使用 NSB v6.4.3、NServiceBus.RabbitMQ v4.4.1、RabbitMQ.Client v5.0.1。我的队列是自动创建的,但是当我向队列发送消息时,我收到了这个错误。

"title": "通道已关闭:AMQP关闭原因,由Peer发起,code=404, text=\"NOT_FOUND - no exchange 'SelfDriving.NServicebus' in vhost '/'\", classId=60, methodId= 40, cause=.", "detail": " 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at NServiceBus .MutateOutgoingTransportMessageBehavior.d__1.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\ n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 NServiceBus.SerializeMessageConnector.d__1。MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at NServiceBus.MutateOutgoingMessageBehavior.d__1.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 NServiceBus.UnicastSendRouterConnector.d__1.MoveNext()\r\n- -- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 SelfDriving.Api.Controllers.BasicController.d__19.MoveNext() 在 C:\Source \innovate\self_driving_ideas.cs\SelfDriving.Api\Controllers\BasicController.cs:第 61 行\r\n--- 在 System.Runtime.CompilerServices 处从先前引发异常的位置结束堆栈跟踪 ---\r\n .TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 SelfDriving.Api C:\Source\innovate\self_driving_ideas.cs\SelfDriving.Api\Controllers\FiltersController.cs 中的 .Controllers.FiltersController.d__3.MoveNext():第 188 行\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime。 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 SelfDriving.Api.Controllers.FiltersController.d__2.MoveNext() 在 C:\Source\innovate \self_driving_ideas.cs\SelfDriving.Api\Controllers\FiltersController.cs:line 168\r\n--- 堆栈跟踪从先前抛出异常的位置结束---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter .ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Threading.Tasks.TaskHelpersExtensions.d__3`1。MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 -- -\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Web.Http.Filters。 ActionFilterAttribute.d__5.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Web.Http.Filters.ActionFilterAttribute.d__5。MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 -- -\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Web.Http.Controllers。 ActionFilterResult.d__2.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()", "code": "系统异常”

我在使用 MsmqTransport 时没有任何问题 这是我的配置代码

    config = new EndpointConfiguration("SelfDriving.NServiceBus");
config.AssemblyScanner();
config.UsePersistence<InMemoryPersistence>();
config.LimitMessageProcessingConcurrencyTo(1);
var recoverability = config.Recoverability();
recoverability.Immediate( customizations: immediate => { immediate.NumberOfRetries(3);});
DefaultFactory defaultFactory = LogManager.Use<DefaultFactory>();
defaultFactory.Directory("c:\storage\Bus");
defaultFactory.Level(LogLevel.Error);
config.SendFailedMessagesTo("error");
config.AuditProcessedMessagesTo("audit", TimeSpan.FromDays(7));
var rabbitMQTransport = config.UseTransport<RabbitMQTransport>().Transactions(TransportTransactionMode.ReceiveOnly);
var rabbitMQRouting = rabbitMQTransport.Routing();
rabbitMQRouting.RouteToEndpoint(assembly: Assembly.GetAssembly(typeof (BasicMessage)),destination: "SelfDriving.NServiceBus");
config.SendOnly();
var endpointInstance = Endpoint.Start(config).GetAwaiter().GetResult();
4

2 回答 2

3

发生此问题是因为 RabbitMQ 区分大小写并且我将其发送到SelfDriving.NServicebus这是一个错误的端点而不是SelfDriving.NServicebus 一旦我更改端点名称,这个问题就解决了

于 2018-04-11T16:02:27.950 回答
0

您正在将端点配置为 SendOnly。这意味着没有传入队列。但是您还可以配置路由以将程序集中的所有消息发送BasicMessage到该完全相同的端点。

这导致了这个问题no exchange 'SelfDriving.NServicebus'

如果您删除 SendOnly 选项,它可能会起作用。

于 2018-04-11T08:23:59.360 回答