问题标签 [nservicebus6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 超时管理器立即重新调整超时
我有一个非常简单的调度器传奇,它应该每天发送一条特定的消息。它被实现为请求超时的 saga。处理超时时,将执行一个操作(发送一条消息),并在第二天请求新的超时。
我之前成功地完成了完全相同的事情,但现在超时似乎立即触发,所以无论请求什么 DateTime。
端点是自托管的,并配置为使用 InMemoryPersistence。NServiceBus 版本是 6.4.3。
传奇的实现如下。我已经删除了所有逻辑,但仍然会立即无限地收到超时消息。
端点配置如下:
我还尝试使用内置的调度机制,同样的事情发生了,每秒触发数百次超时。
更新:添加带有重现问题的代码的 repo。
https://github.com/spinakr/nsb-scheduling-msmq
只有在项目中引用包“NServiceBus.Azure.Transports.WindowsAzureStorageQueues”时才会出现问题,即使它没有被使用!
审查中的应用程序有两个端点托管在同一进程中。使用来自 MSMQ 和 Azure 存储队列的消息。在 repo 中,只有在添加 azure storage queues 传输包时才会开始出现问题。
nservicebus - NServiceBus 移除 IBus - 利用 IPipelineContext 和 IMessageSession
我正在将 NServiceBus 迁移到 v6,并且在删除对 IBus 的引用的过程中遇到了障碍。
我们为我们的许多应用程序(网站、微服务等)构建了一个通用库,并且该库具有 IEventPublisher 的概念,它本质上是一个发送和发布接口。该库不了解 NSB。然后,我们可以使用应用程序中的 DI 提供此 IEventPublisher 的实现,这允许库的消息传递很容易被另一种技术替换。
所以我们最终得到的是一个类似于
这是对实际发生的事情的简化,但说明了我的问题。现在,当 DI 容器被要求提供 IEventPublisher 时,它知道返回 NsbEventPublisher 并且知道解析 IEndpointInstance,因为我们在网站的引导程序中将它作为单例绑定到容器。一切都很好,我的网站运行完美。
我现在正在迁移微服务(在 NSB.Host 中运行)并且 DI 容器在解析消息处理程序中的依赖项时拒绝解析 IEndpointInstance。阅读文档是有意的,我应该在消息处理程序中使用 IMessageHandlerContext 。 https://docs.particular.net/nservicebus/upgrades/5to6/moving-away-from-ibus 文档甚至避开了我在 MyContextAccessingDependency 类的底部示例中遇到的问题。建议是通过对在消息处理程序上下文中运行的代码产生硬依赖的方法传递消息上下文。
我想做的是访问发送者/发布者,DI 容器可以给我正确的实现。代码不需要调用者的任何概念,如果它是从消息处理程序调用的,还是从只想发布的自托管应用程序调用的。
我看到有两个接口用于与 IMessageHandlerContext 和 IEndpointInstance 接口分别扩展的“总线”IPipelineContext 和 IMessageSession 进行通信。我想知道 NSB 绑定到容器中的两个接口是否有一些统一,所以我可以接受发送/发布消息的接口。在处理程序中,它是一个 IMessageHandlerContext,而在我的自托管应用程序中,它是 IEndPointInstance。
现在,我希望根据应用程序托管更改 IEventPublisher 的实现。我只是希望可能会讨论如何在没有可靠接口发送/发布的情况下对这种方法进行建模,而不管是什么启动了代码路径的执行。
error-handling - 当请求处理程序失败时,NServiceBus 6 回调客户端永远不会得到回调
使用 NServiceBus 6 的回调功能,我发现无法提醒客户端请求处理程序失败。请求处理程序将经过所有可恢复性步骤,最终将消息放入错误队列。与此同时,客户只是坐在那里等待它的回复。
在上述情况下,如何让 MVC 控制器/调用代码知道处理程序已永久失败?
nservicebus - NServiceBus 仅发送端点不生成心跳
我正在使用NServiceBus.Core v6.4.3
和NServiceBus.Heartbeat v2.0.0
我有一个控制台应用程序作为计划任务运行,它提取数据并将命令发送到端点进行处理。
控制台应用程序配置为 SendOnly 端点。
我的代码如下:
主要的
端点配置
约定
删除行使configuration.SendOnly();
端点EndpointConfiguration
出现在 ServicePulse 中,但不会以其他方式出现。
我知道这是以前版本中的一个问题,但我认为这已在NServiceBus V5
.
我不必将端点配置为仅发送,但我只是为了完整性。
rabbitmq - 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 - 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 时没有任何问题 这是我的配置代码
nservicebus - NServiceBus6 延迟恢复不延迟
在没有非常详细地了解我们试图解决的问题的情况下,我需要让 NServiceBus 做 5 件事中的 1 件事,但我目前只是想让第一个工作。也就是说,给定来自 Web API 调用的回复,我们希望延迟重试、立即重试、放弃、取消或重新开始。延迟重试看起来最好使用自定义可恢复性来完成,所以我遵循了这个:自定义可恢复性策略并提出了这个
然后作为测试,我发了一条简单的消息,这样我就不必强迫 web api 做一些愚蠢的事情:
然后“处理”
我启动了服务,在大约 1.5 分钟的时间内,两条测试消息被处理了大约 5,400 次。日志消息与此类似(为简洁起见,省略了堆栈跟踪)
所以要么我做错了什么,要么有一个错误,但我不知道是哪个。任何人都可以看到问题是什么?
编辑
这是方法handleUpdateRequestFailure.HandleFailedRequest
正如评论指出的那样,我也会对我发现的消息进行无限重试,但这是它的更新逻辑
rabbitmq - 使用带有 rabitMQ 传输的 Nservicebus 版本 6.2.0 在处理程序中出现错误
我正在使用 Nservicebus 6.2.0 版和 rabitMQ 传输(NServiceBus.RabbitMQ 5.0.0 版)。我在处理程序的服务总线上收到错误
错误 NServiceBus.RecoverabilityExecutor 将消息“34894416-ea8a-4d5a-ae41-a95e00f51a35”移动到错误队列“错误”,因为处理因异常而失败:NServiceBus.MessageDeserializationException:尝试从传输消息 34894416 中提取逻辑消息时发生错误- ea8a-4d5a-ae41-a95e00f51a35 ---> NHibernate.LazyInitializationException: Initializing[Unavailable#]-未能延迟初始化集合,在 NHibernate.Collection.AbstractPersistentCollection.ThrowLazyInitializationException(String message) in c:\源代码控制\Git\nhibernate-core\src\NHibernate\Collection\AbstractPersistentCollection.cs:在 C 中 NHibernate.Collection.AbstractPersistentCollection.ThrowLazyInitializationExceptionIfNotConnected() 的第 483 行:\Source control\Git\nhibernate-core\src\NHibernate\Collection\AbstractPersistentCollection.cs:NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean writing) in c:\Source control\Git\nhibernate-core\src\NHibernate 中的第 477 行\Collection\AbstractPersistentCollection.cs:NHibernate.Collection.AbstractPersistentCollection.Write() 中 c:\Source control\Git\nhibernate-core\src\NHibernate\Collection\AbstractPersistentCollection.cs 的第 465 行:NHibernate.Collection.PersistentBag 的第 362 行.Add(对象值)在 c:\Source control\Git\nhibernate-core\src\NHibernate\Collection\PersistentBag.cs:Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList 列表,JsonReader 阅读器,JsonArrayContract 合同的第 379 行, JsonProperty containerProperty, String id) 在 Newtonsoft.Json.Serialization。Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadMetadataProperties 的 JsonSerializerInternalReader.CreateList(JsonReader 阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,对象现有值,字符串 id)(JsonReader 阅读器,Type& objectType,JsonContract& 合同,JsonProperty 成员,JsonContainerContract containerContract,JsonProperty containerMember , Object existingValue, Object& newValue, String& id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader .SetPropertyValue(JsonProperty 属性, JsonConverter propertyConverter,JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,JsonContainerContract containerContract,JsonProperty containerMember,Object existingValue)在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty 属性,JsonConverter propertyConverter,JsonContainerContract containerContract,JsonProperty containerProperty,JsonReader 阅读器,对象目标)在Newtonsoft.Json.Serialization.JsonSerializerInternalReader。PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member , 字符串 id) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader。在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty 属性、JsonConverter propertyConverter、JsonContainerContract containerContract、JsonProperty containerProperty、JsonReader reader、Object目标) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member , JsonContainerContract containerContract, JsonProperty containerMember,Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty) 中的对象 existingValue) Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadMetadataProperties (JsonReader reader, Type& objectType, JsonContract& contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue, Object& newValue, String& id) 在 Newtonsoft.Json .Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member,JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonSerializer .Deserialize[T](JsonReader reader) at NServiceBus.DeserializeLogicalMessagesConnector.Extract(IncomingMessage physicalMessage) 在 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\DeserializeLogicalMessagesConnector.cs:NServiceBus.DeserializeLogicalMessagesConnector 的第 115 行。 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\DeserializeLogicalMessagesConnector.cs 中的 ExtractWithExceptionHandling(IncomingMessage 消息):第 44 行 --- 内部异常堆栈跟踪结束 --- 在 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\DeserializeLogicalMessagesConnector.cs: 中的 NServiceBus.DeserializeLogicalMessagesConnector.ExtractWithExceptionHandling(IncomingMessage message) 处结束在 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\DeserializeLogicalMessagesConnector.cs:line 29 中的 NServiceBus.DeserializeLogicalMessagesConnector.d__1.MoveNext() 处 --- 从引发异常的上一个位置结束堆栈跟踪--- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 NServiceBus.InvokeAuditPipelineBehavior.d__1.MoveNext() 在 C:\BuildAgent\work\3206e2123f54fce4\src \N服务总线。Core\Audit\InvokeAuditPipelineBehavior.cs:第 18 行 --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()任务任务)在 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\UnitOfWork\UnitOfWorkBehavior.cs:line 52 中的 NServiceBus.UnitOfWorkBehavior.d__1.MoveNext() 中的 NServiceBus.UnitOfWorkBehavior.d__1.MoveNext() 中的异常所在位置的堆栈跟踪结束抛出 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 C:\BuildAgent\work\3206e2123f54fce4\ 的 NServiceBus.ReceivePerformanceDiagnosticsBehavior.d__2.MoveNext()源\NServiceBus。Core\Performance\Statistics\ReceivePerformanceDiagnosticsBehavior.cs:第 40 行 --- 在 System.Runtime.CompilerServices.TaskAwaiter 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 处从先前引发异常的位置结束堆栈跟踪。 HandleNonSuccessAndDebuggerNotification(Task task) at NServiceBus.MutateIncomingTransportMessageBehavior.d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\MessageMutators\MutateTransportMessage\MutateIncomingTransportMessageBehavior.cs:line 43 --- 堆栈跟踪结束引发异常的位置 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 NServiceBus.ProcessingStatisticsBehavior.d__0 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()。C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Performance\Statistics\ProcessingStatisticsBehavior.cs:line 27 中的 MoveNext() --- 在 System.Runtime 处从先前引发异常的位置结束堆栈跟踪.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 NServiceBus.AzureServiceBus.TransactionScopeSuppressBehavior.d__0.MoveNext() 在 C:\BuildAgent\work\2f57832e2eee436e\src\Transport\Receiving\ TransactionScopeSuppressBehavior.cs:第 23 行 --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()服务总线。C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\TransportReceiveToPhysicalMessageProcessingConnector.cs:line 37 中的 TransportReceiveToPhysicalMessageProcessingConnector.d__1.MoveNext() --- 堆栈跟踪从上一个引发异常的位置结束---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 NServiceBus.MainPipelineExecutor.d__1.MoveNext() 在 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus。 Core\Pipeline\MainPipelineExecutor.cs:第 32 行 --- 在 System.Runtime.CompilerServices.TaskAwaiter 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 处从先前引发异常的位置结束堆栈跟踪。HandleNonSuccessAndDebuggerNotification(Task task) at NServiceBus.Transport.RabbitMQ.MessagePump.d__29.MoveNext() in C:\BuildAgent\work\ef98ad7376e3379a\src\NServiceBus.RabbitMQ\Receiving\MessagePump.cs:line 249
c# - 为什么 NServicebus 不能将消息发送到具有不同 RabbitMQ 虚拟主机的队列?
我有 2 个部署的服务,它们使用 NServicebus 消息传递通过 RabbitMQ 进行通信。然而,微服务在 RabbitMq 上使用不同的虚拟主机,并且发送的消息没有被接收。
如果我在本地运行这两个服务并使用相同的虚拟主机,一切正常。消息不能跨虚拟主机有什么原因吗?有没有办法解决这个问题,而无需使用不同的虚拟主机多次部署服务?
尽管发送选项有办法在代码中指定虚拟主机,但我找不到任何有效的方法
.net - NServiceBus 5 和 6 兼容性
NserviceBus 6 端点可以向 NServiceBus 总线 5 端点发送消息吗?
我有两个 .Net 项目,一个在版本 6 中定义了一个端点,并将消息发送到在版本 5 中定义的端点。版本 5 中的处理程序没有接收消息,因此我无法让这些端点相互通信。这是因为它们不兼容吗?