首页 文章

NserviceBus 6使用RabbitMQTransport无法正常工作

提问于
浏览
0

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

"title": "Channel has been closed: AMQP close-reason, initiated by Peer, code=404, text="NOT_FOUND - no exchange 'SelfDriving.NServicebus' in vhost '/'", classId=60, methodId=40, cause=.", "detail": " at 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--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at NServiceBus.SerializeMessageConnector.d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at NServiceBus.MutateOutgoingMessageBehavior.d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at NServiceBus.UnicastSendRouterConnector.d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n at SelfDriving.Api.Controllers.BasicController.d__19.MoveNext() in C:\Source\innovate\self_driving_ideas.cs\SelfDriving.Api\Controllers\BasicController.cs:line 61\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n at SelfDriving.Api.Controllers.FiltersController.d__3.MoveNext() in C:\Source\innovate\self_driving_ideas.cs\SelfDriving.Api\Controllers\FiltersController.cs:line 188\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n at SelfDriving.Api.Controllers.FiltersController.d__2.MoveNext() in C:\Source\innovate\self_driving_ideas.cs\SelfDriving.Api\Controllers\FiltersController.cs:line 168\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at 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": "System.Exception"

我使用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();

2 回答

  • 0

    您将 endpoints 配置为SendOnly . 这意味着没有传入队列 . 但是,您还可以配置路由以将 BasicMessage 所在的程序集内的所有消息发送到此完全相同的 endpoints .

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

    如果你删除SendOnly选项它可能会工作 .

  • 0

    出现此问题的原因是RabbitMQ区分大小写并且我将其发送到 SelfDriving.NServicebus 这是一个错误的终点而不是 SelfDriving.NServicebus 这个问题在我更改 endpoints 名称后立即解决

相关问题