问题标签 [nservicebus5]

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.

0 投票
1 回答
48 浏览

.net - 如何让 NServiceBus SLR 与 MsmqPersistence 一起工作

我创建了一个 Windows 控制台应用程序来测试 NServiceBus v5.2.16。我正在使用 MsmqPersistence。FLR 在接收方无法处理消息时起作用。但是,一旦尝试了 FLR,SLR 就不会启动。

FLR 和 SLR 根据指南定义,如下所示:

这就是我启动服务总线的方式:

任何帮助是极大的赞赏

问候

0 投票
1 回答
364 浏览

c# - NServiceBus 无法接收消息

我正在关注 NServiceBus 入门指南(第 5 版),但出现以下错误。

当客户端向服务器发送命令时,服务器无法接收消息。代码没问题,因为另一台机器上完全相同的代码正在运行。所以我的机器上缺少一些东西。

我确实按照教程中的说明运行了这个命令:

DISM.exe /Online /NoRestart /English /Enable-Feature /all /FeatureName:MSMQ-Server

但它仍然无法正常工作。

2016-11-01 19:50:47.316 错误 ServiceBus.Transports.Msmq.MsmqDequeueStrategy 接收消息时出错。System.Transactions.TransactionAbortedException:事务已中止。---> System.Transactions.TransactionManagerCommunicationException:与底层事务管理器的通信失败。---> System.Runtime.InteropServices.COMException:事务管理器不可用。(来自 HRESULT 的异常:0x8004D01B)在 System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(字符串 nodeName,Guid resourceManagerIdentifier,IntPtr managedIdentifier,Boolean& nodeName Matches,UInt32& whereaboutsSize,CoTaskMemHandle& whereaboutsBuffer,IResourceManagerShim& resourceManagerShim)在 System.Transactions.Oletx.DtcTransactionManager。

0 投票
2 回答
126 浏览

nservicebus - 根据端点可用性重定向 NServiceBus 消息

我是 NServiceBus 的新手,但目前使用它与 SQL Server Transport 在三台机器之间发送消息:一台属于名为 的端点Server,两台属于名为 的端点Agent。这按预期工作,发送到Agent端点的消息通过默认循环分发到两台机器之一。

我现在想添加一个新的端点PriorityAgent,用一个不同的队列和两台额外的机器调用。虽然所有端点都使用相同的消息类型,但我知道每条消息在发送之前应该在哪里处理,所以通常我可以选择正确的目标端点,然后相应地处理消息。

但是,我需要构建一个特殊情况:如果PriorityAgent端点上的所有机器当前都关闭了,那么通常应该发送到那里的消息应该被发送到Agent端点,以便可以毫不拖延地处理它们。另一方面,如果Agent端点上的所有机器当前都已关闭,Agent则不应向 发送任何消息PriorityAgent,它们可以简单地等待Agent机器返回。

我一直在研究实现这一点的正确方法,但没有看到很多结果。我想这不是一个闻所未闻的场景,所以我的假设是我正在寻找错误的东西或以错误的方式思考这个问题。尽管如此,我还是想出了几个潜在的解决方案:

  1. 单独跟踪PriorityAgent机器的心跳,如果这些心跳停止,则添加一个修改器或行为以将传出PriorityAgent消息的目的地更改到Agent端点。

  2. PriorityAgent消息一个短暂的过期时间,并以某种方式处理过期时间以将消息重定向到Agent端点。我不确定这是否真的可行。

这些解决方案之一是在正确的轨道上,还是我完全不在基地?

0 投票
2 回答
856 浏览

nservicebus - NServiceBus 警告有关 TimeoutPersisterReceiver 无法从超时存储中获取超时

我最近注意到我的 NSB 日志文件由于我以前从未注意到的警告而显着增长。

2017-03-21 12:17:50.554 WARN NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver 无法从超时存储中获取超时 System.NullReferenceException: La référence d'objet n'est pas définieà une instance d'un objet。à NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver.Poll(Object obj) dans C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Timeout\Hosting\Windows\TimeoutPersisterReceiver.cs:ligne 90 à System.Threading.Tasks .Task.Execute() 2017-03-21 12:17:50.560 INFO NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker TimeoutStorageConnectivity 的断路器现在处于待命状态

此警告每秒钟出现一次,因此您可以想象我的日志文件的大小。

当我调整 NServiceBus 日志级别时,我注意到了这个警告,因为我的服务中有几次无法解释的崩溃。我发现此警告会使我的服务在一段时间后崩溃,从而导致 FatalExecutionEngineError 异常(请参见下面的屏幕截图)。

FatalExecutionEngineError 截图

我正在使用 NServiceBus 5.2.21。

有谁可以帮助我摆脱这个警告?

0 投票
2 回答
68 浏览

c# - 通过约定配置的事件不会导致订阅

我的应用程序正在尝试从端点接收事件。
如果我显式订阅<>(),我会在发布端点看到订阅。如果我尝试通过配置约定来获得相同的结果,它会失败。

我错过了什么?

我的配置如下所示:

最相关的文档和示例代码似乎没有提到我应该做的任何其他事情https://docs.particular.net/nservicebus/messaging/conventions?version=core_5

0 投票
1 回答
543 浏览

c# - 无法让 NServiceBus 不抛出异常(MessageQueueException、SqlException、TimeoutPersisterReceiver)

我有一个非常令人沮丧的 NServiceBus 问题,我似乎无法弄清楚。我希望你们能对情况有所了解。

我目前正在使用 NServiceBus.Core v5.0 和 NServiceBus.Host v6.0 并在不显眼模式下运行它。

似乎无论我使用什么配置,我总是会遇到某种错误。我将从产生最少问题的配置开始:

案例 1 - 使用自定义装配扫描:

我在这里注意到的问题如下:

  1. 当启动 NServiceBus 主机应用程序并且持久性 SQL 数据库尚不存在时,不会抛出异常说找不到数据库(在情况 2 中确实如此)。

  2. 我不断收到以下异常:

NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver 无法从超时存储中获取超时

这最终导致应用程序崩溃,因为当此错误发生太多次时,ServiceBus 认为足够了,就抛出一个致命异常。

  1. 除了上述问题,应用程序运行完美接收和处理消息......直到发生致命异常

现在,这个有点困难:

案例 2 - 使用默认程序集扫描:

在这种情况下,会出现以下问题:

当持久化 SQL 数据库尚不存在时:

  1. 启动 NServiceBus 宿主应用程序且 SQL 数据库不存在时,抛出异常 - 预期行为(这是肯定的)

创建持久化 SQL 数据库后:

  1. ServiceControl.Plugin.Nsb5.Heartbeat.Heartbeats|无法将心跳发送到 ServiceControl:NServiceBus.Unicast.Queuing.QueueNotFoundException:无法将消息发送到地址:[Particular.ServiceControl@MYPCNAME]

  2. 引发的异常:System.Messaging.dll 中的“System.Messaging.MessageQueueException”附加信息:外部组件引发了异常。

  3. 2017-09-15 16:25:45.6743|Warn|NServiceBus.Unicast.Messages.MessageMetadataRegistry|消息标头“SharedTemp.Interfaces.ICustomCommand”已映射到“SharedTemp.Interfaces.ICustomCommand”类型,但在消息中找不到该类型注册表 [...]

  4. 抛出异常:NServiceBus.Core.dll 中的“System.Exception”附加信息:找不到“Newtonsoft.Json.Linq.JObject”的元数据。

现在,异常 3 和 4 特别奇怪(不是双关语),因为 NServiceBus 文档指出:

默认情况下,端点 bin 目录中的所有程序集都被扫描以查找实现其接口的类型,以便它可以自动配置它们。

“Newtonsoft.Json”和我的“SharedTemp dll”确实在 BIN 文件夹中,但 NServiceBus 似乎没有找到它们。至于第 1 点:NServiceBus 不会为我创建该队列,但它会创建我需要的所有其他队列。

最后总是请求的 app.config 文件:

有没有人对此有任何想法?

0 投票
1 回答
37 浏览

amazon-web-services - 恢复的 AWS 实例上的 RavenDB

我有一个使用 NServiceBUS 端点的 UAT 环境。一切正常。然后当我们转移到生产环境时,我们用来制作环境的方法是制作 UAT 服务器的 IMAGE 并在新的 AWS 服务器实例上恢复

我们重新安装了 RAVENDB,但在管理服务器的 Windows 身份验证页面上,我们看到了来自旧服务器的身份验证。我已删除 RavenSITE 文件夹并卸载 RavenDB,重新启动服务器并尝试再次安装,但旧的身份验证行项目仍在出现。这些存储在哪里?所以我可以去删除它们。

端点也没有向实例注册,并且没有为每个端点创建数据库

请协助!

0 投票
1 回答
89 浏览

nservicebus - 将 NServiceBus 5 升级到 6

将 Nservicebus 从版本 5 升级到 6 后出现错误。这发生在我的 MessageEndpoint 中调用自定义方法之前。我的 MessageEndpoint 继承自 IConfigureThisEndpoint, AsA_Server

API 限制:程序集“file:///PostSharp.dll”已从不同位置加载。它不能从同一 appdomain 中的新位置加载。

0 投票
1 回答
253 浏览

c# - NServiceBus 单元测试:bus.Send() 时未完成 ExpectSend

我正在使用 NServiceBus5.2.21、NServiceBus.Testing5.2.1、Moq4.0.1、NUnit3.2.0

问题:ExpectSend<>一直失败

“ExpectedSendInvocation 未完成”

何时_bus.Send()正确调用。不知道我在这里缺少什么。

测试:

处理程序:

0 投票
1 回答
275 浏览

nservicebus - 如何查看 nserviceBus 消息的目的地?

在 nServiceBus 的第 5 版中,我有一个跟踪飞行中消息的行为。

在行为中,我能够访问 DeliveryOptions(SendOptions) 并查看目标队列,在 NSB 6 中,随着行为的更改,我似乎无法再访问消息的目标。

有谁知道从行为访问传出消息的目的地?

v5 中的先前代码:

v6 中的代码: