<netMsmqBinding>

定义适合跨计算机通信的排队绑定。

<配置>
   <system.serviceModel>
     <绑定>
       <netMsmqBinding>

Syntax

<netMsmqBinding>
  <binding closeTimeout="TimeSpan"
           customDeadLetterQueue="Uri"
           deadLetterQueue="Uri"
           durable="Boolean"
           exactlyOnce="Boolean"
           maxBufferPoolSize="Integer"
           maxReceivedMessageSize="Integer"
           maxRetryCycles="Integer"
           name="String"
           openTimeout="TimeSpan"
           poisonMessageHandling="Disabled/EnabledIfSupported"
           queueTransferProtocol="Native/Srmp/SrmpSecure"
           receiveErrorHandling="Drop/Fault/Move/Reject"
           receiveTimeout="TimeSpan"
           receiveRetryCount="Integer"
           rejectAfterLastRetry="Boolean"
           retryCycleDelay="TimeSpan"
           sendTimeout="TimeSpan"
           timeToLive="TimeSpan"
           useActiveDirectory="Boolean"
           useMsmqTracing="Boolean"
           useSourceJournal="Boolean">
    <security>
      <message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
               clientCredentialType="None/Windows/UserName/Certificate/InfoCard" />
      <transport msmqAuthenticationMode="None/WindowsDomain/Certificate"
                 msmqEncryptionAlgorithm="RC4Stream/AES"
                 msmqProtectionLevel="None/Sign/EncryptAndSign"
                 msmqSecureHashAlgorithm="MD5/SHA1/SHA256/SHA512" />
    </security>
    <readerQuotas maxArrayLength="Integer"
                  maxBytesPerRead="Integer"
                  maxDepth="Integer"
                  maxNameTableCharCount="Integer"
                  maxStringContentLength="Integer" />
  </binding>
</netMsmqBinding>

特性和元素

下列各节描述了特性、子元素和父元素。

特性

Attribute Description
closeTimeout 一个 TimeSpan 值,该值指定为完成关闭作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。
customDeadLetterQueue 一个 URI,其中包含每个应用程序死信队列的位置,其中放置了已过期或传输失败或传递失败的消息。

死信队列是发送应用程序的队列管理器上的一个队列,用于发送未能传递的过期消息。

指定的 CustomDeadLetterQueue URI 必须使用 net.msmq 方案。
deadLetterQueue 一个 DeadLetterQueue 值,该值指定要使用的死信队列的类型(如果有)。

死信队列是将传输未能传递到应用程序的消息的位置。

对于需要 exactlyOnce 保证的消息(即属性 exactlyOnce 设置为 true),此属性默认为 MSMQ 中的系统范围的事务死信队列。

对于不需要保证的消息,此属性默认为 null
durable 一个布尔值,指示消息在队列中是持久还是易失。 持久消息在队列管理器崩溃后幸存下来,而易失性消息则无法运行。 当应用程序需要较低的延迟并且可以容忍偶尔丢失的消息时,易失性消息非常有用。 如果属性 exactlyOnce 设置为 true,则消息必须持久。 默认值为 true
exactlyOnce 一个布尔值,该值指示此绑定处理的每个消息是否只传递一次。 然后,发送方将收到送达失败的通知。 如果为durable“何时false”,将忽略此属性并传输消息而不保证传递。 默认值为 true。 有关详细信息,请参阅 ExactlyOnce
maxBufferPoolSize 一个整数,指定此绑定的最大缓冲池大小。 默认值为 8。
maxReceivedMessageSize 一个正整数,用于定义此绑定处理的最大消息大小(以字节为单位),包括标头。 超出此限制的消息发送方将收到 SOAP 错误。 接收方删除消息,并在跟踪日志中创建事件的条目。 默认值为 65536。 此限制消息大小旨在限制拒绝服务攻击(DoS)攻击的暴露。
maxRetryCycles 一个整数,指示病毒消息检测功能使用的重试周期数。 当消息失败所有周期的所有传递尝试时,消息将成为病毒消息。 默认值是3。 有关详细信息,请参阅 MaxRetryCycles
name 必需的特性。 一个字符串,其中包含绑定的配置名称。 此值应是唯一的,因为它用作绑定的标识。 从 .NET Framework 4 开始,不需要绑定和行为才能具有名称。 有关默认配置和无名称绑定和行为的详细信息,请参阅 WCF 服务的 简化配置简化配置
openTimeout 一个 TimeSpan 值,该值指定为打开作完成提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。
QueueTransferProtocol 一个有效 QueueTransferProtocol 值,该值指定此绑定使用的排队信道传输。 使用 SOAP 可靠消息传送协议时,MSMQ 不支持 Active Directory 寻址。 因此,不应将此属性Srmp设置为或Srmps将此属性设置为useActiveDirectorytrue
receiveErrorHandling 一个 ReceiveErrorHandling 值,该值指定如何处理有害消息和非可发送消息。
receiveRetryCount 一个整数,指定队列管理器在将消息传输到重试队列之前应尝试发送消息的最大次数。
receiveTimeout 一个 TimeSpan 值,该值指定为接收作完成提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:10:00。
retryCycleDelay 一个 TimeSpan 值,该值指定尝试传递无法立即传递的消息时重试周期之间的时间延迟。 该值仅定义最小等待时间,因为实际等待时间可能更长。 默认值为 00:10:00。 有关详细信息,请参阅 RetryCycleDelay
sendTimeout 一个 TimeSpan 值,该值指定为要完成的发送作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。
timeToLive 一个 TimeSpan 值,该值指定消息在过期前的有效时间,并将其放入死信队列中。 默认值为 1.00:00:00。

此属性设置为确保接收应用程序处理时间敏感消息之前不会过时。 在指定的时间间隔内,接收应用程序未使用的队列中的消息据说已过期。 过期的消息将发送到称为死信队列的特殊队列。 死信队列的位置根据保证使用属性或适当的默认值进行设置 DeadLetterQueue
usingActiveDirectory 一个布尔值,该值指定是否应使用 Active Directory 转换队列地址。

MSMQ 队列地址可以包含路径名称或直接格式名称。 使用直接格式名称,MSMQ 使用 DNS、NetBIOS 或 IP 解析计算机名称。 使用路径名称,MSMQ 使用 Active Directory 解析计算机名称。

默认情况下,Windows Communication Foundation (WCF) 排队传输会将消息队列的 URI 转换为直接格式名称。 通过将属性设置为 UseActiveDirectory true,应用程序可以指定排队传输应使用 Active Directory 而不是 DNS、NetBIOS 或 IP 解析计算机名称。
useMsmqTracing 一个布尔值,该值指定是否应跟踪此绑定处理的消息。 默认值为 false。 启用跟踪后,每次消息离开或到达消息队列计算机时,都会创建报告消息并将其发送到报告队列。
useSourceJournal 指定此绑定处理的消息副本的布尔值应存储在源日志中。 默认值为 false

希望保留计算机传出队列的消息记录的排队应用程序可以将消息复制到日记队列。 消息离开传出队列并收到确认消息在目标计算机上接收后,该消息的副本将保留在发送计算机的系统日记队列中。

子元素

元素 Description
<readerQuotas> 定义由使用此绑定配置的终结点可以处理的 SOAP 消息复杂性的约束。 此元素的类型 XmlDictionaryReaderQuotasElement为 .
<安全> 定义绑定的安全设置。 此元素的类型 NetMsmqSecurityElement为 .

父元素

元素 Description
<绑定> 此元素包含标准绑定和自定义绑定的集合。

注解

绑定 netMsmqBinding 通过将Microsoft消息队列(MSMQ)用作传输来支持队列,并支持松散耦合应用程序、故障隔离、负载调配和断开连接作。 有关这些功能的讨论,请参阅 WCF 中的队列

Example

<configuration>
  <system.ServiceModel>
    <bindings>
      <netMsmqBinding>
        <binding closeTimeout="00:00:10"
                 openTimeout="00:00:20"
                 receiveTimeout="00:00:30"
                 sendTimeout="00:00:40"
                 deadLetterQueue="net.msmq://localhost/blah"
                 durable="true"
                 exactlyOnce="true"
                 maxReceivedMessageSize="1000"
                 maxRetries="11"
                 maxRetryCycles="12"
                 poisonMessageHandling="Disabled"
                 rejectAfterLastRetry="false"
                 retryCycleDelay="00:05:55"
                 timeToLive="00:11:11"
                 sourceJournal="true"
                 useMsmqTracing="true"
                 useActiveDirectory="true">
          <security>
            <message clientCredentialType="Windows" />
          </security>
        </binding>
      </netMsmqBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

另请参阅