2012-03-19 48 views
1

我目前正在做一个遗留应用程序,它在机器之间进行大量的同步通信。通信主要通过Http帖子完成,我想知道如果使用NServiceBus使通信异步,我们是否会受益。NServiceBus会是我们的应用程序的正确选择吗?

通过CQRS,我已经意识到NServiceBus,但没有详细看过它。

与编写应用程序的同事交谈时,他们看到它就好像无法进行调用那么整个事务就会失败,我们应该坚持这种模式。大多数通信涉及多个用户在服务器上配置硬件,在这种情况下,我们不需要某种排队/异步框架。

那么,我会从异步和NServiceBus是正确的框架有什么好处?我如何说服他们,如果是我们的情况,一个asnyc消息传递架构是否应该走?或者我介绍一个没有必要的框架?

+1

POST失败时会发生什么?你如何解决它? – 2012-03-19 23:35:23

+0

在这个阶段它全部或全部没有,所以整个事务得到回滚。 – 2012-03-20 10:02:37

+0

所以我会假设重试是手动的。如果在重试之前需要手动干预和研究,那么我不知道添加消息是否有帮助。 – 2012-03-20 13:16:29

回答

3

那么,“如果它没有坏”的老格言在这里发挥了作用。尽管如此,如果没有理由“修复”某些东西(例如可用性/数据丢失问题),那么建立一个用于改变它的参数是非常困难的。

为了解决你的问题,根据我的经验,NServiceBus的一个主要优点是拥有成本低。很容易拿起,学习,部署,而且一旦在生产中有很少的管理开销。

UPDATE

RE:

这取决于你想怎么玩的话:关于显示通话的结果给用户评论。

在这种情况下,在CQRS模式中向用户显示成功消息是很常见的,因为当用户检查调用结果时,结果将不是他们期望的结果。但是,如果通话执行了一些可能导致延迟的严重处理,或者如果通话具有“自然”很高的失败几率,那么您可以选择向用户显示“谢谢您的请求”消息然后通过一些离线方式(例如带有链接到响应的电子邮件)向他们提醒通话结果。

当你走异步时,你必须以不同的方式开始考虑服务水平协议 - 例如指定99%的请求将在1秒内处理,然后你可以围绕该要求规划你的设计和基础设施。

+0

谢谢,它更试图查看NServiceBus是否在我们的应用程序中是必要的,并试图获得一些反馈,看看是否有任何好处。 – 2012-03-20 10:04:09

+0

NServiceBus几乎肯定会满足您的所有要求,并免费为您提供很多好处。其中一个主要优点是您的代码变得简单很多,因为您可以删除所有失败处理/补偿代码,因为这是为您处理的。 – 2012-03-20 10:40:27

+0

谢谢。如果我确实使用了NServiceBus(忽略了一个mo的格言),并且失败了,那么即使我的活动存储库(我正在使用J Oliver的事件采购库)已经更新,但用户仍然感觉所有工作都已更新,但我的调用其他机器失败了? – 2012-03-21 10:10:59

相关问题