Rebus多态调度奇怪的行为

时间:2017-04-03 23:17:04

标签: rebus

我在Rebus 3.1.2中使用MSMQ传输和StructureMap 4.4.2容器进行多态消息调度时遇到了一个奇怪的问题。

如果我有消息:

public class SomeMessage

和一些处理程序:

public class Handler1 : IHandleMessages<SomeMessage>
public class Handler2 : IHandleMessages<SomeMessage>

当我发送SomeMessage时,两个处理程序都按预期启动。

然而,当我收到消息时:

public class SomeMessage : ISomeInterface

和一些处理程序:

public class Handler1 : IHandleMessages<SomeMessage>
public class Handler2 : IHandleMessages<ISomeInterface>

当我发送SomeMessage时,只有Handler1触发。但是如果我注释掉Handler1并再次发送消息,Handler2将会触发。

如果从SomeBaseClass和Handler2继承的SomeMessage处理SomeBaseClass(甚至是对象),情况也是如此。只有Handler1才会开火。但如果我注释掉Handler1,Handler2就会开火。

如果找到特定邮件类的任何处理程序,它几乎不会尝试进行多态分派。

因为Handler2会在我注释掉Handler1时触发,所以我不认为这是一个容器问题。我猜测这是否真的坏了,其他人会注意到。所以我假设它是我,但我不知道从哪里开始。

AFAIK,没有什么可以配置多态分派,对吧?

知道我可能做错了吗?

0 个答案:

没有答案