我正在亚马逊 (AWS) 云中创建一个新的 ASP MVC 订单应用程序,并在我的本地数据中心使用持久层。我将使用 CQRS 模式。该项目的目标是使用 Queue(s) 来存储和转发可以在我的本地数据中心异步获取和处理的写入(命令/事件)的高可用性。然后,如果 WAN 或我的本地数据中心出现故障,我的云 MVC 应用程序仍然可以接受订单并将它们排队,直到处理可以恢复。
我的第一个想法是使用 AWS SQS 进行排队,并在我自己的 c# 应用程序中创建自己的队列使用者/调度程序/处理程序来处理传入的消息/事件。
MVC(@Amazon)--> 事件/POCO--> SQS--> QueueReader(@我的数据中心)--> DB
然后我找到了 NServiceBus。NSB 似乎很好地处理了很多细节:消息处理、重试、错误处理等。我讨厌重新发明轮子,而 NServiceBus 似乎是一个功能齐全且成熟的产品,非常适合我。
但是在进一步的研究中,看起来 NServiceBus 并不是真的要在物理上分离的环境(云到我的数据中心)中通过 WAN 使用。Google 和 SO 并没有像我需要的那样真正描绘出在 WAN 上使用 NServiceBus 的好图景。
我可以这样做吗?
MVC (@ Amazon) --> 事件/POCO --> NServiceBus over WAN --> NServiceBus Handler(s) --> DB
如何跨 WAN 使用 NServiceBus?或者是否有更好的解决方案来处理亚马逊和我的本地数据中心之间的排队和消息处理?