问题标签 [nservicebus3]
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.
c# - 是否有一种在 Nservicebus 3 中定义错误队列的流畅方式
我想知道是否可以使用流畅的 (Configure.With()) 语法为我的应用程序定义错误队列的位置?
请注意,这已在 nservicebus3 中更改为通过 MessageForwardingInCaseOfFaultConfig 进行配置
c# - NServicebus 3中错误设置的MaxRetries在哪里
使用 NServiceBus 3,错误队列的配置位置已从
MsmqTransportConfig 到 MessageForwardingInCaseOfFaultConfig,但是我不确定 MsmqTransportConfig 上指定的其他属性(例如 MaxRetries)应该去哪里。
请参阅http://docs.particular.net/nservicebus/msmq/transportconfig
nservicebus - 类型 ... 未在序列化程序中注册(非 Web 应用程序)
我正在尝试使用 NServiceBus 3.0 发送命令。当我发送一个实现 ICommand 的命令时,一切正常。但是,如果我使用约定,它就不起作用。来源如下。有人可以告诉我我做错了什么吗?
该命令如下所示:
neventstore - 当使用超过 1 个线程时,带有 NServiceBus 的 EventStore 会导致死锁
我目前正在开发一个使用 EventStore、CommonDomain 和 NServiceBus 的项目,当我将 NumberOfWorkerThreads 设置为 1 时,我们所有的服务(nservicebus - 我们有 6 个,每个都有自己的事件存储)运行完美,但是当我将 NumberOfWorkerThreads 设置为不止一个,我开始看到大量死锁,我的意思是每分钟至少 50 个。所有的死锁都在 Commits 表上。根据我的发现,看起来我正在多个线程中更新相同的聚合,这很容易在每个说的目录和导入过程中发生,并且我在一个线程中更新数量,同时在另一个线程中更新价格线程,所以两个线程都试图更新同一个聚合。
有没有其他人遇到过这个问题,你是如何解决的?
nservicebus - NServiceBus IHandleTimeouts 抛出 SagaNotFoundHandlers
我正在尝试在我的 Saga 中使用 NServiceBus 3.0 ITimeoutState 和 IHandleTimeouts 功能。我有以下代码片段。以下代码在 NServiceBus.3.0.0-rc5 上运行良好,没有任何问题。但是,当我使用任何版本 > 3.0.0 更新 DLL 时,传奇超时没有按预期工作,它会引发以下警告!
2012-04-05 09:15:26,267 [Worker.5] INFO NServiceBus.Sagas.Impl.SagaDispatcherFactory [(null)] <(null)> - 找不到消息类型 SomeNameSpace.MySagaTimeout 的 saga,id 为 9496c29e- f745-4ada-8212-99e47324922b\20920。将调用SagaNotFoundHandlers。
请帮我解决这个问题。
超时消息:
传奇密码:
配置:
注意:我正在使用自己的 saga 持久化器,并且我有 IFindSagas<MySagaState>.Using<MySagaTimeout>的实现
azure - Azure 中的 NServiceBus 错误队列
我正在尝试在 Azure 中设置 NServiceBus。在本地开发期间,我使用存储队列,而在云中部署时,我使用 Azure 服务总线。由于某种原因,当发生错误时,消息不会移动到错误队列中。事实上,甚至没有创建错误队列。
在我的 Web.config 文件中,我有以下配置:
配置 NServiceBus 时,我调用:
当消息失败时,日志中的最后一个错误总是
对此有什么想法吗?消息传递似乎有效,只是错误处理不起作用。
nhibernate - NServiceBus 重试消息,即使没有异常
尽管处理程序中没有引发异常,但 NServiceBus 重发消息 X 次时遇到了一个奇怪的问题。有一些关于 NHibernate 会话和 NSB 环境事务的信息。由于没有引发错误,我不能 100% 确定问题所在,因此无法真正决定要做什么。
我将 NSB 配置为 Castle Windsor,如下所示:
像这样UnitOfWorkInstaller
注册工作单元(NHibernate 会话):
因此,每次消息到达时,所有存储库都使用相同的工作单元。我读到手动回滚当前事务会导致错误(我真的不知道为什么),而且我还知道 NSB 为每个传输消息创建一个子容器,并且这个子容器在消息处理后被释放。问题是当子容器被处理时,工作单元是这样处理的:
我的处理程序的结构如下:(_unitOfWork 作为构造函数依赖项传递)
我发现如果我不提交工作单元(刷新会话并提交事务),我会收到一条错误消息,提示消息已重试超过最大重试计数 bla bla bla ...
所以它似乎与 NHibernate 会话以及它的创建和处理方式有关,但由于它是在工作单元中创建的,所以我不能真正使用会话工厂。我读到我可以使用 IMessageModule 来创建和处理会话,但是我不知道这是否是正确的方法,因为我首先不明白是什么导致了错误。
回顾一下:
我正在使用一个范围内的工作单元,以便所有使用它的处理程序依赖项将共享相同的实例(感谢子容器,顺便说一句:我已经将工作单元设置为瞬态,认为子容器将处理所有瞬态对象作为该容器中的单例,但我看到工作单元没有共享,所以这就是为什么它设置为范围)
我将我的处理程序包装在一个
using(_unitOfWork) { }
语句中,以在每次处理后处理工作单元。当工作单元被释放时,NHibernate 会话也被释放
如果我没有显式调用
Commit
,_unitOfWork
则消息重试超出最大重试次数,然后引发错误。
是什么导致了这种行为?IMessageModule 是这个问题的答案吗?
nservicebus - NServiceBus 稍后处理消息
我正在使用 NSerivceBus 构建一个系统,它应该只在特定的时间范围内将消息发送到远程处理程序。到目前为止,我设法将所有消息放在一个处理队列上,并从那里检查远程处理程序的可用性,如果处理程序不可用,我不会将消息发送到边界之外。为此,我正在使用
但NSB会在之后继续尝试。它不像另一个监听器会在几分钟内启动并运行,但它可能有几个小时的中断窗口,所以这并不完全有效。
想知道是否有办法让总线稍后重试消息,或者不要继续重试并在下次重试之前等待一段时间。我将使用 Sagas,只是简单的命令/处理程序消息。
c# - 从 NServiceBus 主机发送消息
我们有一个审核消息处理程序,如果在此处理程序中引发任何异常,我们希望它向 LogMessageInputQueue 发送一条日志消息,该消息将由另一个消息处理程序处理。
是否可以从 NServiceBus 主机进程中发送新消息?AuditMessageHandler 在其构造函数中接受处理程序 IBus,但在调用时
没有抛出异常,但消息没有出现在 LogMessageInputQueue 上,似乎只是消失了......
所有的处理程序和队列都在同一台机器上。
.net - 带有 Castle Windsor 子容器的快照
在阅读了有关 NServiceBus 3 对子容器支持的页面 ( http://docs.particular.net/nservicebus/containers/child-containers ) 之后,我期待在 Castle Windsor 中,父容器中的瞬态组件的行为类似于单例子容器。然而,这些父组件与子容器的依赖关系每次都会被实例化。
有没有办法在温莎城堡中实现父容器快照的这种行为?换句话说,容器中组件的瞬态,如果从子容器解析,则为单例。