NServiceBus:事件、多重继承、每个事件多次调用处理程序
我很抱歉,每个事件都会多次调用处理程序,这似乎与通过接口继承构建的事件相关,这存在一些神秘的问题 我们只为消息使用接口,并使用NServiceBus:事件、多重继承、每个事件多次调用处理程序,nservicebus,Nservicebus,我很抱歉,每个事件都会多次调用处理程序,这似乎与通过接口继承构建的事件相关,这存在一些神秘的问题 我们只为消息使用接口,并使用NServiceBus.MessageInterfaces.MessageMapper.Reflection.MessageMapper().CreateInstance()创建要放到总线上的实例 我们的界面: IOperationOccured-包含基本操作信息,此事件的订阅者以相当通用的方式进行操作。此事件从未直接引发 ISpecificOperationOccure
NServiceBus.MessageInterfaces.MessageMapper.Reflection.MessageMapper().CreateInstance()
创建要放到总线上的实例
我们的界面:
IOperationOccured
-包含基本操作信息,此事件的订阅者以相当通用的方式进行操作。此事件从未直接引发
ISpecificOperationOccured
-继承IOperationOccured
。包含更具体的信息。此事件的订阅者可以做更具体的事情,因为该事件更具体
问题是,当引发isSpecificOperationOccured
时,调用IOperationOccured
的处理程序,调用isSpecificOperationOccured
的处理程序,然后再次处理消息,再次调用处理程序
我误解了什么?我希望
IOperationOccured
的处理程序在每个事件中调用一次,而isSpecificOperationOccured
的处理程序在每个事件中调用一次。我知道答案晚了,但希望这能帮助其他人
当IOperationOccured和ISpecificOperationOccured的单独处理程序部署在同一端点中时,会发生这种情况。e、 g
- 端点1(引发IsSpecificOperationOccered)
- Endpoint2(处理IOperationOccured和IsSpecificOperationOccured)
- IOperationOccured->Endpoint2
- i发生特定操作->端点2
- 端点1(引发IsSpecificOperationOccered)
- Endpoint2(处理IOperationOccered)
- 端点3(句柄为特定操作)
IHandleMessages
的直接实现。确保IOperationOccured
继承IMessage
,而不是ISpecificOperationOccured
,那么它们是否被代理?我只是想知道这是不是让我们失望的部分。显示将消息放在总线上的代码以及示例处理程序签名将有所帮助。您能提供推荐方法的参考吗?此方法的文档很少,但您可以在此处找到一些指导:,此解决方法非常烦人。对我来说,这似乎是一个错误。如果将句柄移动到两个端点会更改消息的处理次数,则设计是错误的。