问题标签 [nservicebus4]
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.
ravendb - 没有有效的商业许可证无法设置 Windows 身份验证
NServiceBus 3+ 默认使用 RavenDB 进行持久化。几篇文章(this、this和this)提到,只要 RavenDB 仅用于存储 NServiceBus 数据(Subscription、Saga、Timeouts),NServiceBus 许可证就足够了,不需要单独的 RavenDB 许可证。但是,当前版本的 RavenDB (Build 2700) 不允许在服务器上设置身份验证并抛出以下错误 (Cannot setup Windows Authentication without a valid commercial license
)。这是否意味着我们不能再在没有单独许可的情况下将 RavenDB(至少是最新版本)与 NServiceBus 一起使用?这至少在构建 2380 之前可以正常工作。那是版本从 v2.0 更改为 v2.5 的时候。在没有身份验证的情况下使用持久性不是一个选项,因为订阅和超时是 NServiceBus 特定的数据,sagas 可以并且确实包含不能通过 http 访问每个人(即使在 LAN 内)的敏感数据。为 RavenDB 购买许可证并不是什么大问题,但到目前为止,我们知道只要 RavenDB 不用于 NServiceBus 数据以外的任何东西,我们只需要 NServiceBus 许可证。很高兴能从 NServiceBus 或 RavenDB 团队那里得到澄清。
nservicebus - 单元测试期间 NServiceBus 4.0.4 中的“不支持多个序列化程序”配置错误
我正在尝试对 NServiceBus 4.0.4 的消息处理程序进行单元测试。总线配置为使用Configure.Serialization.Json();
方法调用在应用程序中使用 JSON 序列化程序。
每当我Test.Initialize()
从单元测试程序集中调用该方法时,都会出现以下异常:System.Configuration.ConfigurationErrorsException : Multiple serializers are not supported. Please make sure to only enable one
我尝试调用Configure.Serialization.Json()
并且Serializers.SetDefault<JsonSerialization>()
在调用该Test.Initialize()
方法之前没有任何成功。
有谁知道我做错了什么?我在互联网上看到的所有例子都没有提到任何Configure
电话。
queue - NServiceBus 4.03,当队列不存在时,消息被发送到事务死信 Q
我有分销商/工人模型。
机器 A - 分销商
机器 B - 工人
当工人 B 尝试使用错误的 Q 名称向 Distributor 发送消息时,它会将消息放入事务死信 Q 中。
我期待消息传递给错误 q。
nservicebus - NServiceBus 4.03 Distributor 将 30 条消息放入存储队列,用于控制队列中的一条消息
当工作人员启动时,它会将消息放入控件 q,然后当我启动分发器时,它会从控件 Q 中获取消息并将30条消息放入存储 q。任何线索为什么???
nservicebus4 - Nservicebus 4.0 从网站发送 IEvent
我正在从 2.6 升级到 4.0。在 2.6 中,我让我的网站将消息发送到 Publisher 服务。Publisher 服务然后将消息发布给一个或多个订阅者。
但是,在 4.0 中,必须发送 IMessage 并发布一个 IEvent。我无法发送 IEvent。据我所知,这给我留下了两个选择。要么创建两条完全相同的消息,一条实现 IMessage(用于向发布者发送命令),另一条实现 IEvent(用于向订阅者发布),或者发布不可自动发现的 IMessage,并确保所有订阅者明确指定他们想要的消息。
显然,第二种方法是唯一可行的方法(如果可能的话),但我希望还有另一种方法。在那儿?
performancecounter - NServiceBus 4.03 生产中的性能计数器
我在我们的开发环境中使用配置文件启用性能计数器。我正在考虑在生产中使用它。
如果我们在生产中启用这些计数器会影响性能吗?
error-handling - NServiceBus 4.03,Bus.Send 后跟错误条件
我在佐贺有以下场景
方案 1
如果数据库在那一刻停机怎么办,
- 消息会被发送吗?
- 如果是,那么重试(FLR/SLR)会触发哪个会再次发送消息?
情景2
- 消息会被发送吗?
ninject - 如何在 Web 应用程序中注册消息修改器
我将 NServiceBus 4.0.3 与 Ninject 构建器一起使用,但无法弄清楚如何注册消息修改器 ( IMutateTransportMessages
)。
我已经用 Ninject Kernel 注册了 mutator,但它从未被调用过。下面是我如何配置 NServiceBus:
.net - NServiceBus 4 无法转发失败的消息,找不到队列
迁移到 NService 4 (4.0.4) 后我遇到了问题。当消息处理失败时,看起来整个 NServiceBus 正在停止并且不做任何工作(不再使用来自 MSMQ 的消息)。查看日志后,我发现以下错误:
NServiceBus.log:
2013-10-02 17:49:31.5786 | 致命 | 110 | 故障管理器无法处理 ID 为 aa32dce1-f408-4f6d-b448-a24b0118ec27 System.InvalidOperationException 的失败消息:无法将失败消息转发到错误队列“administration.worker@localhost.Retries@localhost”,因为找不到它。---> NServiceBus.Unicast.Queuing.QueueNotFoundException: 无法将消息发送到地址:[administration.worker@localhost.Retries@localhost] ---> System.Messaging.MessageQueueException: 队列不存在或您没有足够的权限来执行操作。在 System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle() 在 System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS 属性,ITransaction 事务) 在 System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS 属性,Core\Transports\Msmq\MsmqMessageSender.cs:C:\BuildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Faults 中 NServiceBus.Faults.Forwarder.FaultManager.SendFailureMessage(TransportMessage 消息,异常 e,布尔序列化异常)的第 76 行Forwarder\FaultManager.cs:line 48InnerExceptionSystem.Messaging.MessageQueueException (0x80004005):队列不存在或您没有足够的权限执行操作。在 System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle() 在 System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS 属性,ITransaction 事务) 在 System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS 属性,IntPtr 事务) 在 System.Messaging.MessageQueue.SendInternal (对象 obj,MessageQueueTransaction internalTransaction,
MsmqDequeueStrategy.log 有很多:
2013-10-02 17:49:32.5579 | 错误 | 57 | 错误处理消息。System.ObjectDisposedException:信号量已被释放。在 System.Threading.SemaphoreSlim.Release(Int32 releaseCount) 在 NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Action() 在 c:\BuildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 227在 System.Threading.Tasks.Task.Execute()
故障管理器日志:
2013-10-02 17:49:31.5746 | 致命 | 110 | 无法将失败的消息转发到错误队列“administration.worker@localhost.Retries@localhost”,因为找不到它。
我按如下方式初始化 NSB:
编辑:更多信息。我在 IIS 中托管 NSB。我在其中发布、发送和处理消息。
Web.config 看起来像这样:
handler - NServiceBus 4.03 有没有办法将抛出给错误处理程序的消息保留为一些错误 q
我有 5 个不同的处理程序作为 Windows 服务作为 NServiceBus 主机运行。
当我的客户端将消息发送到错误的端点(即它指向端点 B 而不是端点 A)时,我遇到了问题,导致消息没有得到处理(如预期的那样)。但是无论如何将那些无法由处理程序处理的消息保存到某个队列中,以便可以手动将其传递给不同的 q。
目前消息丢失了,我们无法对它做任何事情。