使用WCF的MSMQ监听器

Abh*_*yak 8 c# wcf msmq

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

我有2个wcf服务构建,1个用于向MSMQ队列发送数据,另一个由MSMQ侦听器在MSMQ队列中插入时调用.现在我想知道我需要如何以及在哪里编写这个MSMQ监听器.

tom*_*ern 4

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

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

你可能(或应该)有这样的东西:

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

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

更新

为了回答下面评论中的问题,要定义队列地址,您可以在<System.ServiceModel>配置中执行以下操作:

<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>
Run Code Online (Sandbox Code Playgroud)

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