定义通过 MSMQ 路由消息来提供队列支持的绑定。
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding>
<msmqIntegrationBinding>
Syntax
<msmqIntegrationBinding>
<binding closeTimeout="TimeSpan"
customDeadLetterQueue="Uri"
deadLetterQueue="Uri"
durable="Boolean"
exactlyOnce="Boolean"
maxReceivedMessageSize="Integer"
maxRetryCycles="Integer"
name="String"
openTimeout="TimeSpan"
receiveContextEnabled="Boolean"
receiveErrorHandling="Drop/Fault/Move/Reject"
receiveTimeout="TimeSpan"
receiveRetryCount="Integer"
retryCycleDelay="TimeSpan"
sendTimeout="TimeSpan"
serializationFormat="XML/Binary/ActiveX/ByteArray/Stream"
timeToLive="TimeSpan"
useMsmqTracing="Boolean"
useSourceJournal="Boolean">
</binding>
</msmqIntegrationBinding>
特性和元素
以下部分介绍属性、子元素和父元素
特性
| Attribute | Description |
|---|---|
| closeTimeout | 一个 TimeSpan 值,该值指定为完成关闭作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| customDeadLetterQueue | 一个 URI,其中包含每个应用程序死信队列的位置,其中放置了已过期或传输失败或传递失败的消息。 死信队列是发送应用程序的队列管理器上的一个队列,用于发送未能传递的过期消息。 指定的 CustomDeadLetterQueue URI 必须使用 net.msmq 方案。 |
| deadLetterQueue | 一个 DeadLetterQueue.value,指定要使用的死信队列类型(如果有) 死信队列是无法传递到应用程序的消息将传输到应用程序的位置。 对于需要精确保证(即属性设置为 exactlyOnce)的消息,true此属性默认为 MSMQ 中的系统范围的事务死信队列。对于不需要保证的消息,此属性默认为 null。 |
| 耐用 | 一个布尔值,指示消息在队列中是持久还是易失。 持久消息在队列管理器崩溃后幸存下来,而易失性消息则无法运行。 当应用程序需要较低的延迟并且可以容忍偶尔丢失的消息时,易失性消息非常有用。 如果属性 exactlyOnce 设置为 true,则消息必须持久。 默认值为 true。 |
| exactlyOnce | 一个布尔值,该值指示是否只传递每条消息一次。 然后,发送方将收到送达失败的通知。 如果为durable“何时false”,将忽略此属性并传输消息而不保证传递。 默认值为 true。 有关详细信息,请参阅 ExactlyOnce。 |
| maxReceivedMessageSize | 一个正整数,用于定义此绑定处理的最大消息大小(以字节为单位),包括标头。 超出此限制的消息发送方将收到 SOAP 错误。 接收方删除消息,并在跟踪日志中创建事件的条目。 默认值为 65536。 此限制消息大小旨在限制拒绝服务攻击(DoS)攻击的暴露。 |
| maxRetryCycles | 一个整数,指示病毒消息检测功能使用的重试周期数。 当消息失败所有周期的所有传递尝试时,消息将成为病毒消息。 默认值为 2。 有关详细信息,请参阅 MaxRetryCycles。 |
| 姓名 | 一个字符串,其中包含绑定的配置名称。 此值应是唯一的,因为它用作绑定的标识。 从 .NET Framework 4 开始,不需要绑定和行为才能具有名称。 有关默认配置和无名称绑定和行为的详细信息,请参阅 WCF 服务的 简化配置 和 简化配置。 |
| openTimeout | 一个 TimeSpan 值,该值指定为打开作完成提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| receiveErrorHandling | 一个 ReceiveErrorHandling 值,该值指定如何处理有害消息和非可发送消息。 |
| receiveRetryCount | 一个整数,指定队列管理器在将消息从应用程序队列传输到应用程序失败时应尝试的最大重试次数。 如果达到最大传递尝试次数且应用程序无法访问该消息,则会在以后将消息发送到重试队列进行重新传送。 消息传回发送队列之前的时间量由该 retryCycleDelay消息控制。 如果重试周期达到 maxRetryCycles 该值,则会将消息发送到病毒消息队列,或将负面确认发送回发送方。 |
| receiveTimeout | 一个 TimeSpan 值,该值指定为接收作完成提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:10:00。 |
| receiveContextEnabled | 一个布尔值,指定是否启用了队列中处理消息的接收上下文。 如果设置为此值 true,服务可以在队列上“查看”消息以开始处理它,如果出现任何问题并且引发异常,它将保留在队列中。 服务还可以“锁定”消息,以便在以后的某个时间点重试处理。 ReceiveContext 提供一种机制,用于在处理消息后“完成”消息,以便从队列中删除它。消息不再通过网络读取和重新写入队列,在处理过程中,单个消息不会在不同的服务实例上跳动。 |
| retryCycleDelay | 一个 TimeSpan 值,该值指定尝试传递无法立即传递的消息时重试周期之间的时间延迟。 该值仅定义最小等待时间,因为实际等待时间可能更长。 默认值为 00:30:00。 有关详细信息,请参阅 RetryCycleDelay。 |
| sendTimeout | 一个 TimeSpan 值,该值指定为要完成的发送作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| serializationFormat | 定义用于消息正文序列化的格式。 此属性的类型 MsmqMessageSerializationFormat为 . |
| timeToLive | 一个 TimeSpan 值,该值指定消息在过期前的有效时间,并将其放入死信队列中。 默认值为 1.00:00:00。 此属性设置为确保接收应用程序处理时间敏感消息之前不会过时。 在指定的时间间隔内,接收应用程序未使用的队列中的消息据说已过期。 过期的消息将发送到称为死信队列的特殊队列。 死信队列的位置根据保证使用属性或适当的默认值进行设置 DeadLetterQueue 。 |
| useMsmqTracing | 一个布尔值,该值指定是否应跟踪此绑定处理的消息。 默认值为 false。 启用跟踪后,每次消息离开或到达消息队列计算机时,都会创建报告消息并将其发送到报告队列。 |
| useSourceJournal | 指定此绑定处理的消息副本的布尔值应存储在源日志中。 默认值为 false。希望保留计算机传出队列的消息记录的排队应用程序可以将消息复制到日记队列。 消息离开传出队列并收到确认消息在目标计算机上接收后,该消息的副本将保留在发送计算机的系统日记队列中。 |
{serializationFormat}属性
| 价值 | Description |
|---|---|
| Xml | XML 格式 |
| Binary | 二进制格式 |
| ActiveX | ActiveX 格式 |
| ByteArray | 将对象序列化为字节数组。 |
| Stream | 格式为流的正文 |
子元素
| 元素 | Description |
|---|---|
| <安全> | 定义绑定的安全设置。 此元素的类型 MsmqIntegrationSecurityElement为 . |
父元素
| 元素 | Description |
|---|---|
| <绑定> | 此元素包含标准绑定和自定义绑定的集合。 |
注解
此绑定元素可用于使 Windows Communication Foundation (WCF) 应用程序能够向现有 MSMQ 应用程序发送消息以及从使用 COM、MSMQ 本机 API 或命名空间中 System.Messaging 定义的类型发送消息,可以使用此配置元素指定处理队列的方法、传输保证以及消息是否必须持久存储, 以及应如何保护和验证消息。 有关详细信息,请参阅 如何:使用 WCF 终结点和消息队列应用程序交换消息。
Example
<configuration>
<system.ServiceModel>
<bindings>
<msmqIntegrationBinding>
<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"
maxImmediateRetries="11"
maxRetryCycles="12"
poisonMessageHandling="Disabled"
rejectAfterLastRetry="false"
retryCycleDelay="00:05:55"
timeToLive="00:11:11"
useSourceJournal="true"
useMsmqTracing="true"
serializationFormat="Binary">
<security mode="None" />
</binding>
</msmqIntegrationBinding>
</bindings>
</system.ServiceModel>
</configuration>