2

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

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

问:我想知道,如何将此模型实现为旧的 MSMQ 方法?

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

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

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

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

任何帮助,将不胜感激。

4

1 回答 1

3

在回答您的问题时:

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

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

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

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

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

队列应该托管在哪里?

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

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

MSMQ 确实通过响应队列相关 ID消息头字段为请求/响应消息传递提供了基本支持,尽管这并不是真正的开箱即用(因为您需要使用这些值并针对这些值进行编程)

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

于 2012-07-17T13:42:19.313 回答