使用configsection将消息从同一程序集映射到Rebus中的不同端点

时间:2015-06-17 06:46:55

标签: rebus

我在共享组件Domain.Messages中有我的消息类型,我需要使用我的.config文件中的RebusConfigurationSection将消息从该程序集映射到不同的端点。

像这样:

<endpoints>
  <add messages="Domain.Messages.SubNamespaceA, Domain.Messages" endpoint="SubsystemA.input" />
  <add messages="Domain.Messages.SubNamespaceB, Domain.Messages" endpoint="SubsystemB.input" />
</endpoints>

这不起作用,但是我可能以某种方式使用IDetermineMessageOwnership的实现并在那里处理路由吗?

1 个答案:

答案 0 :(得分:2)

目前无法通过命名空间进行映射 - 当前选项是a)映射整个消息组合,如下所示:

<endpoints>
    <add messages="Domain.Messages" endpoint="SubsystemA.input" />
</endpoints>

或b)单独显式地映射消息类型,如下所示:

<endpoints>
    <add messages="Domain.Messages.SubNamespaceA.MyMessage, Domain.Messages" endpoint="SubsystemA.input" />
</endpoints>

您当然可以实施IDetermineMessageOwnership并执行您认为的任何时髦的查询:)

我更喜欢的另一个选项是构造消息程序集,以便每个消息程序集只属于一个端点。这样你就可以做到这一点:

<endpoints>
    <add messages="Domain.Messages.SubsystemA" endpoint="SubsystemA.input" />
    <add messages="Domain.Messages.SubsystemB" endpoint="SubsystemB.input" />
</endpoints>

然后再也不用担心(那些特定的)端点映射...