1

经过负载测试,我发现有些数据包不连续。

这是一个基本的 WCF 服务,客户端不断发送请求。

4

1 回答 1

0

使用 netMsmqBinding 可以保证(按顺序、精确一次)交付。

您需要做的第一件事是创建实际的 MSMQ 消息队列事务。

其次,您必须告诉 WCF 加入事务,如下所示:

[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Handle(Something msg)
{
    ....
}

最后,您需要使用 exactOnce 绑定参数指定服务的保证行为:

<netMsmqBinding>
  <binding name="netMsmqBinding_IMyServiceInterface" 
           exactlyOnce="true"> 
    ...
  </binding>
</netMsmqBinding>

ExactlyOnce 告诉 WCF 我们需要事务,每条消息都将按照发送的顺序只发送一次。

于 2016-07-15T11:21:16.053 回答