【问题标题】:MSMQ Listeners using WCF使用 WCF 的 MSMQ 侦听器
【发布时间】:2011-12-05 20:43:49
【问题描述】:

有人知道如何实现 MSMQ 监听器 使用 WCF 吗?

我构建了 2 个 wcf 服务,1 个用于将数据发送到 MSMQ 队列,另一个由 MSMQ 侦听器在 MSMQ 队列中插入时调用。现在我想知道我需要如何以及在何处编写此 MSMQ 侦听器。

【问题讨论】:

标签: c# wcf msmq


【解决方案1】:

您无需在服务上手动实现队列侦听器。

只需创建服务操作合同,您就可以指定当消息到达本地队列时将调用的处理程序方法。

你可能(或应该)有这样的事情:

[OperationContract(IsOneWay = true, Action = "*")]
void HandleMyMessage (MsmqMessage<String> message);

这将确保在传递消息时调用服务实现中的方法 HandleMyMessage()。

更新

在下面的评论中回答您的问题,要定义队列地址,您可以在&lt;System.ServiceModel&gt; 配置中执行此操作:

<services>
  <service 
      name="Microsoft.ServiceModel.Samples.OrderProcessorService"
      behaviorConfiguration="CalculatorServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
      </baseAddresses>
    </host>
    <!-- Define NetMsmqEndpoint -->
    <endpoint address="net.msmq://localhost/private/ServiceModelSamplesTransacted"
              binding="netMsmqBinding"
              contract="Microsoft.ServiceModel.Samples.IOrderProcessor" />
    <!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex -->
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>
</services>

从这里:http://msdn.microsoft.com/en-us/library/ms789032.aspx

【讨论】:

  • 非常感谢休。所以你的意思是说只有一个服务可以同时完成发送和接收操作,对吧?
  • 你在哪里指定队列名,我需要听哪个?
猜你喜欢
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2012-02-27
  • 2013-10-15
  • 2012-04-28
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多