Architecture MSMQ与临时表转储

Architecture MSMQ与临时表转储,architecture,msmq,message-queue,Architecture,Msmq,Message Queue,我知道以前有人问过这个问题。但是环顾四周,我仍然拿不定主意该走哪条路。以下是我的设想,希望您能提供帮助: 我们将有一系列的web服务,数百个移动应用程序将定期访问这些服务。这些服务会将设备上的数据与新信息一起发送到设备,并从设备返回。从设备返回的数据将需要更新一个中央SQL server数据库,该数据库还为多个桌面应用程序和一个网站提供数据 为了减少这些服务的请求/响应时间,我们决定在事后处理来自设备的数据,方法是将这些数据粘贴在MSMQ实例中,或者将序列化对象存储在临时数据存储中,然后让win

我知道以前有人问过这个问题。但是环顾四周,我仍然拿不定主意该走哪条路。以下是我的设想,希望您能提供帮助:

我们将有一系列的web服务,数百个移动应用程序将定期访问这些服务。这些服务会将设备上的数据与新信息一起发送到设备,并从设备返回。从设备返回的数据将需要更新一个中央SQL server数据库,该数据库还为多个桌面应用程序和一个网站提供数据

为了减少这些服务的请求/响应时间,我们决定在事后处理来自设备的数据,方法是将这些数据粘贴在MSMQ实例中,或者将序列化对象存储在临时数据存储中,然后让windows服务处理这些数据

这是我的选择,但除此之外,还有一些事情可以帮助你们给我建议:

  • 从设备返回的数据将不会以需要在服务器端订购的较小消息包的形式返回
  • 我对MSMQ一无所知,但我以前写过windows服务。尽管我没有问题,如果需要的话,我可以选择MSMQ
  • 我希望保留来自设备的响应,以防由于数据导致的某些原因导致处理失败。通过这种方式,我可以查询数据并查看是否存在问题,即设备允许用户添加注释,以扩展服务器端数据库中相关字段的长度
有了这些信息,您认为值得我学习MSMQ吗?还是应该坚持使用更简单的解决方案


克里斯

MSMQ不是一个坏的选择,也绝对不难学,但请记住,您应该注意一些限制因素

缺点:

  • 每个队列只能为2GB
  • 每条消息4MB(尽管4MB限制可以通过使用MSMQ和WCF来固定)
  • 仅适用于Windows,因此对于启用COM的环境,您只能将其与.NET、C/C++或COM库一起使用
优点:

  • 支持Windows网络负载平衡器
  • 支持Microsoft群集服务
  • 与Active Directory集成
  • 船上有窗户
  • 支持事务
  • MSMQ消息可以通过Windows事件日志中的审核消息进行跟踪
  • 消息可以在发送时自动进行身份验证(签名)或加密,并在接收时进行验证和解密

您可能需要考虑的另一种方法是将数据写入到一个分级表中。这可能是一个好主意,因为您需要一个消息返回日志

当我不知道系统架构的其他部分时,很难给出建议,但我希望这个答案会有所帮助

有用的链接