【问题标题】:NserviceBus 6 use RabbitMQTransport not workingNserviceBus 6 使用 RabbitMQTransport 不工作
【发布时间】:2018-04-10 20:22:08
【问题描述】:

我们正在使用 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=.", “详细信息”:“在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 NServiceBus.MutateOutgoingTransportMessageBehavior.d__1.MoveNext( )\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices .TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 NServiceBus.SerializeMessageConnector.d__1.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在系统。 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---从上一个异常位置结束堆栈跟踪被抛出 ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\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--- 堆栈跟踪从先前引发异常的位置结束 ---\r\n 在 System.Runtime。 CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessA ndDebuggerNotification(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 SelfDriving.Api.Controllers.FiltersController.d__3.MoveNext() 在 C:\Source\innovate\self_driving_ideas.cs \SelfDriving.Api\Controllers\FiltersController.cs:188 行\r\n--- 堆栈跟踪从上一个引发异常的位置结束---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n 在 SelfDriving.Api.Controllers.FiltersController.d__2 C:\Source\innovate\self_driving_ideas.cs\SelfDriving.Api\Controllers\FiltersController.cs:line 168 中的 .MoveNext()\r\n--- 堆栈跟踪从上一个引发异常的位置结束 ---\ r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleN onSuccessAndDebuggerNotification(Task task)\r\n at System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext ()\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__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 在 System. Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext()\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)\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(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\ n 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()", “代码”:“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();

【问题讨论】:

    标签: rabbitmq nservicebus rabbitmq-exchange nservicebus6


    【解决方案1】:

    出现这个问题是因为 RabbitMQ 区分大小写,我将它发送到 SelfDriving.NServicebus 这是一个错误的端点,而不是 SelfDriving.NServicebus 更改端点名称后,此问题立即解决

    【讨论】:

    • (a) 你的回答帮助了我。但是(b)你用黄色突出显示的项目,对我来说看起来像同一个CaSe。 (??) 你能否在你的答案中添加一个注释,上面写着“注意“X”的(第三个或第四个或第五个字母)是不同的情况。
    【解决方案2】:

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

    导致问题no exchange 'SelfDriving.NServicebus'

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

    【讨论】:

    • 但是我在使用MsmqTransport的时候发送和接收消息没有问题。一旦我删除了 SendOnly 部分,我就无法启动服务总线。我有这个错误: AMQP 操作被中断:AMQP 关闭原因,由 Peer 发起,代码 = 404,文本 =“NOT_FOUND - vhost '/'中没有队列'SelfDriving.NServicebus'”,classId = 60,methodId = 20、原因=
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多