问题标签 [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.
nservicebus - NServiceBus 工作单元 - 获取调用哪个处理程序?
我正在尝试为 NServiceBus 编写一个工作单元,它将在每个消息处理程序之前和之后调用,以测量该处理程序运行并将其写入数据库所需的时间。
我能够成功编写工作单元,但是在 Begin() 方法实现中,我如何知道正在调用哪个处理程序?
c# - NServiceBus 和 NHibernate EventListener 在不同线程上运行
我想要实现的是我的网站发出一条消息并将其放在总线上,一个服务将其拾取并写入数据库,并通过审计自动填充该行的 AdditionalBy/UpdatedBy 字段。
我通过使用 NServiceBus IMessageMutator 组件来执行此操作,该组件将用户 ID 写入来自 Thread.CurrentPrincipal 的消息头,该消息头来自我的 ASP.Net 应用程序中的登录用户。在我的服务中,我使用 IMessageModule 来提取此标头并将其绑定到 Thread.CurrentPrincipal。这很好用,在我的消息处理程序中,我可以看到 Thread.CurrentPrincipal.Identity.Name 正确绑定到在 Web 应用程序中引发消息的用户 ID。
利用 NHibernate 的 IPreUpdateEventListener/IPreInsertEventListener,我在每个实体写入数据库之前设置了 AdditionalBy/UpdatedBy。这在网站上完美运行,但在我的 NServiceBus 服务中,侦听器运行的线程与处理程序运行的线程不同,这意味着线程的 CurrentPrincipal 不再是我的 IMessageModule 中绑定的 ID。
我可以看到 NHibernate 在调用堆栈中使用了 DistributedTransactionFactory,我怀疑这是我的问题的原因。我不想失去事务性,这样如果提交失败,则不会重试消息或将消息放入错误队列,并且如果从队列中删除消息失败并且更新不会回滚到数据库。
我浏览了网络,所有示例都使用线程的 CurrentPrincipal 来绑定修改行的用户的 id。我正在寻找一种方法,可以将 NHibernate 侦听器与消息处理程序保持在同一线程上,或者将用户 ID 传递给侦听器,以便在将其写入数据库之前将其绑定到实体。
这是我的听众,我省略了其中的 Set 方法
这里是 NServiceBus Message 模块,它提取 id 并将其绑定到当前线程的标识
nservicebus - 在版本 3.x 中排除特定的 nservicebus 主机处理程序(类)
我有一个订阅了某个事件并有自己的处理程序(#1)的 NServiceBus 主机。此主机还具有对包含同一事件的另一个处理程序 (#2) 的程序集的引用。我想从 NServiceBus 配置中排除处理程序 #2,但我无法删除引用的程序集。
重要:
1)我尝试使用此设置扫描:http: //docs.particular.net/nservicebus/hosting/assembly-scanning
2) 我使用 NServiceBus 版本 3.x
nservicebus - 如何使用 AzureStorageQueueTransport 和具有私有访问级别的 Azure 存储帐户配置 NserviceBus
我们将 NserviceBus 与 AzureStorageQueueTransport 和具有公共访问权限的存储帐户一起使用,但现在我们必须使用具有私有访问级别的 Azure 存储帐户。
- 有没有办法在创建端点和发送、发布、接收消息时创建 SAS 令牌和追加。
- NServiceBus 是否对这种要求提供任何支持。