【问题标题】:Does anyone have any architectural information for MSMQ?有没有人有任何 MSMQ 的架构信息?
【发布时间】:2010-12-05 09:33:28
【问题描述】:

我正在尝试确定 MSMQ 是否是在我们的应用程序和我们当前直接与之通信的第三方 Web 服务之间进行通信的正确工具。我们正在寻求解耦,这样如果服务中断,生活仍然可以正常进行。

除了通常的 MS 绒毛之外,我找不到任何关于它是最伟大的东西并解决你所有问题等的东西。如果我能找到一些介于营销绒毛和 API 之间的信息,那将非常有用——比如组件的架构图以及它们如何相互集成,更重要的是我如何与它们集成。

可能我只是在错误的地方寻找信息,所以如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

    标签: msmq


    【解决方案1】:

    MSMQ 是消息队列的实现,websphere mq 和许多其他系统也是如此。在研究概念和高级架构时,我建议阅读消息队列以及它们如何应用于断开连接的场景。我强烈推荐Patterns of Enterprise Application Architecture。有关 msmq 的具体示例,请查看Pro MSMQ: Microsoft Message Queue Programming,它不包含特殊信息的分配,但它确实对它进行了比互联网上可用的大多数资源更好的分组。这个Hello World with MSMQ article 可以让您很好地了解它的含义,并且很容易在开发系统上执行。

    【讨论】:

    • 我之前已经集成了 SonicMQ,这是同一种概念。我想弄清楚的是 MSMQ 在架构上是否是我正在寻找的。​​span>
    【解决方案2】:

    典型的 MSMQ 架构由 3 部分组成...

    • 消息队列 - 这将在您的一台服务器上。您必须安装 MSMQ 位并创建队列。
    • 客户端 - 您的客户端会将消息插入队列。我假设您使用的是 .NET。如果是这样,您想要的大部分内容将位于 System.Messaging 命名空间中。
    • Windows 服务 - 这也将在服务器上运行,可能与您的队列在同一台服务器上。它的工作是监视队列、处理传入的消息、确保外部服务可用,并可能进行一些日志记录。

    这是一个article,应该更详细一点,并为您提供一些代码示例。

    【讨论】:

    • 好的,所以从事情的声音来看,这是大量的工作。我已经有了一个手卷设计,至少包括我们能想到的边缘情况。如果使用 MSMQ 是一项重要的工作,我想知道在此应用程序的专用队列上使用它是否有利。
    • 安装MSMQ、创建队列、插入消息的工作并不多。大部分工作将在 Windows 服务中完成。不过,所有这些都是非常可行的,尤其是如果您非常熟悉 .NET。
    • 好的,这澄清了我的想法,我必须编写处理队列的 Windows 服务以及排队项目的过程。所以 MSMQ 并没有真正节省我在现有数据库中使用表的大量时间。
    • 那篇文章链接到一个空白页面。
    【解决方案3】:

    如果您从应用程序调用远程 Web 服务,使用队列将应用程序处理与远程系统分离是有意义的。通过通过消息传递抽象通信并拥有一个负责与 Web 服务通信的网关服务,您可以将应用程序与 Web 服务的延迟隔离开来,并通过减少应用程序内部的请求/响应使用来在设计中构建容错(因为消息传递默认情况下是异步的 - 您可以预先处理它)。

    有一些 .NET 框架可以使这变得更容易(例如 MassTransit 或 NServiceBus)。

    您还可以查看 SOA 模式(Arnon Rotem-Gal-Oz,Manning Press,MEAP)和企业集成模式(Hohpe,Woolf),后者对于任何构建基于消息的人来说都是必不可少的读物系统。

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2015-11-19
      • 2023-01-25
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多