如何使用WCF和MSMQ在C#中实现单发布者和多订阅者异步消息系统?

如何使用WCF和MSMQ在C#中实现单发布者和多订阅者异步消息系统?,c#,.net,wcf,C#,.net,Wcf,我搜索了很多,但仍然对WCF服务的MSMQ实现没有什么疑问。 因此我提出了这个问题 我想实现一个发布者和多个订阅者的异步消息系统。 我已经决定使用WCF服务作为发布者。 作为多个订阅者,我在不同的机器上有多个窗口服务实例 问:我想知道,这个模型是如何实现为旧的MSMQ方法的 消息中将使用以下类型的对象 [Serializable] public class Message { public string Signal{get;set;} public Guid Identifier{get;se

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

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

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

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

[Serializable]
public class Message
{
public string Signal{get;set;}
public Guid Identifier{get;set;}
}
在上面的类中,windows服务将使用标识符来决定是否为该服务发布消息

不同的窗口服务如何读取同一队列? Q.队列应位于何处? 问:是否可以从窗口服务(订阅者)向WCF服务(发布者)发送确认


任何帮助都将不胜感激

回答您的问题:

我想知道,这个模型是如何实现的 MSMQ方法

首先,MSMQ不支持即时发布和订阅

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

所以在发布-订阅中,没有一个队列。相反,存在多个队列,事实上,在发布子场景中,每个参与者都有一个队列。因此,每个发布服务器都有一个队列,每个订阅服务器都有一个队列

此配置允许订阅服务器向发布服务器发送订阅/取消订阅消息,并允许发布服务器在评估订阅后根据需要向订阅服务器发送消息

队列应位于何处

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

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

MSMQ确实通过和消息头字段为请求/响应消息传递提供了基本支持,但这并不是现成的(因为您需要根据这些值进行消费和编程)

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