如何处理来自输入队列的已发布消息以及将其发布到远程端点?

时间:2014-08-19 22:29:05

标签: rebus

我目前配置了rebus以将 MyMessages 程序集中的所有消息定向到进程管理器输入队列。假设在MyMessage程序集中我有一条名为 SomethingHappened 的消息,它将用于触发流程管理器中的其他操作(例如 DoSomethingElse )。但是,我还想在本地(在同一队列中)订阅 SomethingHappened 来更新数据库。所以工作流程看起来像:

  1. 用户在UI中触发 DoSomething 操作
  2. DoSomething 的处理程序更新对象状态并在内部发布事件 SomethingHappened (在未提交事件的内存集合中)
  3. SomethingHappened 事件通过遍历对象中的所有未注释事件由rebus发布到队列
  4. 在本地处理 SomethingHappened 以更新数据库
  5. 通过saga远程处理 SomethingHappened 以触发 SomethingElseHappened
  6. 这可以在rebus中配置吗?

    我目前拥有的rebus配置:

    <rebus inputQueue="input" errorQueue="error" workers="1" maxRetries="5">
        <endpoints>
            <add messages="MyMessages" endpoint="processManagers.input"/>
        </endpoints>
    </rebus>
    

    谢谢

1 个答案:

答案 0 :(得分:0)

我的错误。我应该将端点更改为配置输入。然后永远不要订阅命令。 :)

<rebus inputQueue="input" errorQueue="error" workers="1" maxRetries="5">
    <endpoints>
       <add messages="MyMessages" endpoint="input"/>
    </endpoints>
</rebus>