MSMQ与临时表转储

时间:2009-01-27 11:48:46

标签: architecture msmq message-queue

我知道这个问题之前已被问过了。但环顾四周我仍然无法让自己明白我应该走哪条路。这是我的方案,希望你可以提供帮助:

我们将推出一系列网络服务,这些服务将在数百个移动应用程序中按计划进行。这些服务将设备上的数据与新信息一起发送到设备并从它们返回。从设备返回的数据将需要更新单个中央SQL服务器数据库,该数据库还提供多个桌面应用程序和网站。

为了减少这些服务的请求/响应的时间,我们决定通过将它们粘贴在MSMQ实例中或将序列化的对象存储在临时数据中来处理来自设备的数据。存储并让Windows服务稍后处理它们。

所以有我的选择,但除此之外还有一些可能有助于你们提醒我的事情:

  • 从设备返回的数据不会在需要在服务器端订购的较小消息包中返回。
  • 我对MSMQ一无所知,但我以前写过Windows服务。虽然如果需要,我可以选择MSMQ。
  • 我想保留设备的响应,以防万一由于某些原因导致数据处理失败。这样我就可以询问数据并查看是否存在问题,即设备允许用户添加扩展服务器端数据库中相关字段长度的注释。

有了这些信息,您认为值得我学习MSMQ还是应该坚持使用更简单的解决方案?

克里斯。

1 个答案:

答案 0 :(得分:8)

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

<强>缺点:

  • 每个队列只能是2GB。
  • 每条消息4MB(尽管使用MSMQ和WCF可以修复4MB限制。)
  • 仅限Windows,因此您只能将其与.NET,C / C ++或COM库一起用于启用COM的环境。

<强>优点:

  • 支持Windows网络负载均衡器。
  • 支持Microsoft群集服务。
  • 与Active Directory集成。
  • 使用Windows发货。
  • 支持交易。
  • Windows事件日志中的审核消息可以跟踪MSMQ消息。
  • 邮件可以在发送时自动进行身份验证(签名)或加密,并在接收时进行验证和解密。

您可能需要考虑的另一种方法是将数据写入临时表。这可能是一个好主意,因为您希望有一个消息返回日志。

当我不了解系统的其他部分架构时很难提供建议,但我希望这个答案会有所帮助。

有用的链接

Programming MSMQ in .NET - Part 1
Using MSMQ with WCF