当MSDTC不可用时,如何使用网关配置nservicebus

时间:2012-01-25 21:03:01

标签: nservicebus cqrs event-sourcing

我是NServiceBus的新手,试图将消息传递到WCF / RPC解决方案中。

由于架构限制和开销(内存和CPU使用率已经很高),IT Operations将不允许使用MSDTC。 (我也很想避免2PC fwiw)。我还需要通过http发送消息,因此NSB桥看起来是一个很好的解决方案。

基于这些帖子(how-i-avoid-two-phase-commitextending-nservicebus-avoiding-two-phase-commits),它看起来好像可以在禁用DTC的情况下使用NSB。 听起来像EventStore确实设法以我想要设置NSB的方式避免2PC,但目前我只想让NSB工作而不是将事件源添加到混合中。

问题:

  1. 是否有任何配置NSB以这种方式工作的例子?我很高兴添加额外的复杂性(自定义消息处理程序与本地消息状态存储) - 没有2PC没有真正的另一种选择。我已经知道这个例子(IdempotentConsumer)但是这个repo的测试项目不包含代码。如果有一个使用nosql存储的例子会更有帮助。
  2. 我是否需要更改NSB桥以处理无DTC?我猜测没有 - 桥接事务只针对本地队列,但是消耗本地队列的进程显然需要编码以避免2PC。正确的吗?
  3. 在没有MSDTC的情况下使用NSB还有其他有用的资源/帖子吗?解决方案(how-i-avoid-two-phase-commit)似乎并不太复杂,但考虑到我刚刚开始使用NSB,找到一个快速启动会很好...
  4. 我原本以为这是一种常见的情况 - 但是在使用NSB时似乎没有太多关于避免MSDTC的文章。当然还有其他人正在使用消息总线,但不允许使用MSDTC ...还有另一种我错过的明显方式吗?
  5. 谢谢

1 个答案:

答案 0 :(得分:1)

2)是的你应该没事。由于您正在进行自我重复数据删除,因此您无需使用网关为您执行此操作。只需将其配置为使用InMemory持久性,你应该没问题。