小编sri*_*lla的帖子

WCF MSMQ 4.0中的毒性消息处理

我试图用MSMQ传输处理WCF中的有害消息.

我按照以下链接创建了原始和毒药服务.

http://msdn.microsoft.com/en-us/library/aa395218.aspx

唯一的区别是不是自托管,而是在IIS中使用单个主机项目托管了2个服务.

两种服务的配置如下.

<services>
  <service behaviorConfiguration="MainMSMQWCFService.Service1Behavior"
    name="MainMSMQWCFService.OrderProcessorService">
    <endpoint address="net.msmq://localhost/private/servicemodelsamplespoison"
      binding="netMsmqBinding" bindingConfiguration="PoisonBinding"
      contract="MainMSMQWCFService.IOrderProcessor" />
  </service>
  <service behaviorConfiguration="MainMSMQWCFService.PoisonHandlingServiceBehavior"
    name="MainMSMQWCFService.PoisonHandlingService">
    <endpoint address="net.msmq://localhost/private/servicemodelsamplespoison;poison" 
              binding="netMsmqBinding"
              bindingConfiguration="PoisonBinding2"
              contract="MainMSMQWCFService.IOrderProcessor">
    </endpoint>
  </service>
</services>
Run Code Online (Sandbox Code Playgroud)

两种服务都正常运行.

问题是当消息被放入毒物队列时,毒物服务不处理消息.我观察了Poison队列中的消息,它们仅针对原始服务.然后毒药服务如何处理它们?通过MSDN后,我知道通过设置服务行为属性,WCF通道会解决这个问题.以下paragraoh解释相同.

"有害消息队列中的消息是发往处理消息的服务的消息,可能与有害消息服务端点不同.因此,当有害消息服务从队列中读取消息时,WCF通道层会发现端点不匹配并且不调度消息.在这种情况下,消息被发送到订单处理服务但是被有害消息服务接收.即使消息被发送到不同的端点,也要继续接收消息,我们必须添加一个ServiceBehavior来过滤匹配条件匹配消息所针对的任何服务端点的地址.这是成功处理从有害消息队列中读取的消息所必需的.

但是我的毒药服务没有处理中毒的消息?

我无法弄清楚这个问题.

wcf msmq

9
推荐指数
1
解决办法
2955
查看次数

标签 统计

msmq ×1

wcf ×1