NServiceBus是我们应用程序的正确选择吗?

NServiceBus是我们应用程序的正确选择吗?,nservicebus,cqrs,Nservicebus,Cqrs,我目前正在开发一个遗留应用程序,它在机器之间进行大量同步通信。通信主要由Http POST完成,我想知道使用NServiceBus使通信异步是否会有好处 通过CQRS,我了解了NServiceBus,但没有详细了解它 与编写该应用程序的同事交谈时,他们认为,如果无法拨打电话,那么整个交易就会失败,我们应该坚持这种模式。大多数通信涉及多个用户在服务器上配置硬件,在这种情况下,我们可能不需要某种排队/异步框架 那么,使用异步技术有什么好处呢?NServiceBus是正确的框架吗?如果是在我们的情况下

我目前正在开发一个遗留应用程序,它在机器之间进行大量同步通信。通信主要由Http POST完成,我想知道使用NServiceBus使通信异步是否会有好处

通过CQRS,我了解了NServiceBus,但没有详细了解它

与编写该应用程序的同事交谈时,他们认为,如果无法拨打电话,那么整个交易就会失败,我们应该坚持这种模式。大多数通信涉及多个用户在服务器上配置硬件,在这种情况下,我们可能不需要某种排队/异步框架

那么,使用异步技术有什么好处呢?NServiceBus是正确的框架吗?如果是在我们的情况下,我如何让他们相信asnyc消息传递体系结构是一条可行之路?还是我引入了一个不必要的框架?

好吧,古老的格言是“如果它没有被打破”。。在这里起作用

不过,说真的,如果没有理由“修复”某个问题(例如,可用性/数据丢失问题),那么很难建立一个改变它的理由

稍微回答一下您的问题,根据我的经验,NServiceBus的主要好处之一是拥有成本低。它易于获取、学习、部署,而且一旦投入生产,管理开销就非常小

更新

回复:关于向用户显示通话结果的评论:

这取决于你想怎么玩

在这种情况下,在CQRS模式中向用户显示成功消息是很常见的,因为当用户检查调用结果时,结果不太可能是他们期望的结果

但是,如果呼叫进行了一些严重的处理,可能导致延迟,或者如果呼叫“自然”很有可能失败,那么您可以选择向用户显示“感谢您的请求”消息,然后通过一些脱机方式(例如带有响应链接的电子邮件)提醒他们呼叫结果


当您使用异步时,您必须开始以不同的方式考虑服务级别协议,例如指定99%的请求将在1秒内处理,然后您可以围绕该要求规划设计和基础架构。

POST失败时会发生什么?如何解决这个问题?在这个阶段,要么全是,要么什么都没有,所以整个事务都会回滚。所以我假设重试是手动的。如果在重试之前需要手动干预和研究,那么我不知道添加消息是否有帮助。谢谢,更多的是想看看NServiceBus是否在我们的应用程序中是必要的,并试图获得一些反馈,看看是否有任何好处。NServiceBus几乎肯定会满足您的所有要求,并免费为您带来很多好处。其中一个主要好处是,您的代码变得简单得多,因为您可以删除所有故障处理/补偿代码,因为这是为您处理的。谢谢。如果我使用了NServiceBus(忽略了mo的格言),并且出现了一些故障,那么即使我的eventstore(我正在使用J Oliver的库进行事件寻源)已经更新,但我对其他机器的调用失败,用户是否仍会感到一切正常?