【问题标题】:clustered MSMQ and WCF集群 MSMQ 和 WCF
【发布时间】:2012-04-27 16:56:19
【问题描述】:

不确定这属于哪个区域,但认为所有 3 个标签都合适。

场景:

集群环境(即 1 个集群中的 3 台计算机) 使用事务性 MSMQ 使用 WCF 服务从队列中读取消息。

在这种情况下,当消息进入队列并将其传递给 WCF 进行处理时会发生什么?它会同时在所有 3 台计算机上处​​理该 1 条消息吗?还是只有一台电脑?

我想确保如果一个节点出现故障,另一个节点会启动并继续,但同时要确保消息没有被多次处理(即那里的 3 台计算机并且它被处理了 3 次)

想法?

【问题讨论】:

    标签: wcf msmq cluster-computing


    【解决方案1】:

    如果一条消息到达具有三个客户端的队列,则只有一个客户端会使用该消息。

    为了提供您想要的冗余类型,有必要多播您的消息。这意味着每个客户端都有自己的输入队列,并且您向所有队列发送完全相同的消息。

    【讨论】:

    • 谢谢。我将如何进行多播? msmq 会不会被集群,这意味着 incomng msgs 将被放置在那里并且节点会获取它?
    • 我不确定如何集群 MSMQ。我已经通过让消息发送者一个一个地发送到队列列表来实现多播。
    • 啊。不幸的是,这可能是我无法做或无法控制的事情。
    • 我现在几乎完成了环境的设置并引导我提出更多问题,或者可能是我睡眠不足(非常)。我有 2 个节点集群。我有 MSMQ 集群。当有消息进来时,它会指向 MSMQ 集群。但是对于读取队列的 WCF 应用程序(自托管控制台应用程序),该应用程序位于何处?两个节点?域中的单独计算机?如果运行此 WCF 应用程序的计算机出现故障怎么办?我希望另一台计算机接管并继续处理,就像集群的 MSMQ 一样。所以我想我需要集群 WCF 应用程序?怎么样?
    • 在那里回答了我自己的问题。在集群节点上安装 WCF 服务应用程序(例如 Windows 服务应用程序)并为其创建集群应用程序或通用服务。我现在遇到的问题是,当它作为集群服务运行时尝试使用 .\private$\queueName 检查队列是否存在时,它会抛出一个错误,指出消息队列服务不可用,但是显然是。甚至尝试使用 。不行。
    猜你喜欢
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2011-03-20
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2010-09-22
    相关资源
    最近更新 更多