【问题标题】:How to implement single publisher and multiple subscribers asynchronous message system in C# using WCF and MSMQ?如何使用 WCF 和 MSMQ 在 C# 中实现单发布者和多订阅者异步消息系统?
【发布时间】:2012-07-17 12:14:22
【问题描述】:

我搜索了很多,但我仍然对 WCF 服务的 MSMQ 实现有一些疑问。 因此我提出了这个问题。

我想实现单发布者和多订阅者异步消息系统。 我决定使用 WCF 服务作为发布者。 作为多个订阅者,我在不同的机器上有多个窗口服务实例。

问。我想知道,这个模型如何实现为旧的 MSMQ 方法?

以下类型的对象将在消息中使用

[Serializable]
public class Message
{
public string Signal{get;set;}
public Guid Identifier{get;set;}
}

在上述类中,Windows 服务将使用标识符来决定是否为该服务发布消息。

问。不同的窗口服务如何读取同一个队列? 问:应该在哪里托管队列? Q. 是否可以将确认从 Window 服务(订阅者)发送到 WCF 服务(发布者)?

任何帮助将不胜感激。

【问题讨论】:

标签: c# .net wcf


【解决方案1】:

回答您的问题:

我想知道,如何将这个模型实现为旧的 MSMQ 方法?

首先,MSMQ 不支持开箱即用的发布订阅。

不同的窗口服务如何读取同一个队列?

所以在发布订阅中,没有一个队列。取而代之的是多个队列,实际上在 pub sub 场景中每个参与者一个。所以每个发布者都有一个队列,每个订阅者都有一个队列。

此配置使订阅者可以向发布者发送订阅/取消订阅消息,并允许发布者在评估订阅后根据需要向订阅者发送消息。

队列应该托管在哪里?

这些队列可以在本地托管给每个参与者,也可以一起托管在某个集群位置。

是否可以从窗口发送确认 服务(订阅者)到 WCF 服务(发布者)?

MSMQ 确实通过 response-queuecorrelation-id 消息头字段为请求/响应消息传递提供基本支持,但这并不是真正的开箱即用(因为您需要使用这些值并针对这些值进行编程)

如果您不需要使用 WCF,则有一个相当成熟的平台,称为 nservicebus,它位于 MSMQ 之上,并为您需要的所有消息传递模式提供支持。

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    相关资源
    最近更新 更多