NserviceBus 6 использовать RabbitMQTransport не работает
Мы используем NSB v6.4.3, NServiceBus.RabbitMQ v4.4.1, RabbitMQ.Client v5.0.1. Мои очереди создаются автоматически, но я получил эту ошибку и сразу же отправил сообщение в свою очередь.
"title": "Канал был закрыт: причина закрытия AMQP, инициированная Peer, code=404, text=\"NOT_FOUND - нет обмена 'SelfDriving.NServicebus' в vhost '/'\", classId=60, methodId=40, причина =.", " Detail": " в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи)\r\nus NS.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(Задача)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNo nSuccessAndDebuggerNotification (Задача)\r\n в NServiceBus.MutateOutgoingMessageBehavior.d__1.MoveNext()\r\n--- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача задачи)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача задачи)\r\n в NServiceBus.UnicastSendRouterConnector.d__1. \ r r трассировка от предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) \ 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\Controller \ Controllers \.cs: строка 61\r\n--- Конец трассировки стека от предыдущего местоположения, где было выброшено исключение n --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача-задача)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача-задача)\r\n в System.RunerC..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(Задача)\r\n в System.Runtime.CompilerServices.TaskAwaiter. HandleNonSuccessAndDebuggerNotification (Задача задачи)\r\n в System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n в SelfDriving.Api.Controllers.FiltersController.d__2.MoveNext() в C: \ Source \ innovate \ SelfDriving.Api \ Controllers \ FiltersController.cs: строка 168\r\n--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача-задача)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача-задача)\r\n в System.Threading.k 1.MoveNext ()\r\n --- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача задачи)\r\n в системе.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)\r\n в 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.Ht.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего местоположения, где было выброшено исключение n --- \ r \ n в System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача-задача)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача-задача)\r\n в System.Web.Hettp.)\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(задача-задача)\r\n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача-задача k)\r\n в 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 ответа
Эта проблема возникла из-за того, что RabbitMQ чувствителен к регистру, и я отправлял его на SelfDriving.NServicebus, который является неправильной конечной точкой вместо SelfDriving.NServicebus. Эта проблема была решена, как только я изменил имя конечной точки
Вы настраиваете свою конечную точку как SendOnly. Это означает, что нет входящей очереди. Но вы также настраиваете маршрутизацию для отправки всех сообщений внутри сборки, в которой BasicMessage
находится в этой же конечной точке.
Это вызывает проблему no exchange 'SelfDriving.NServicebus'
Если вы удалите опцию SendOnly, она, вероятно, будет работать.