定義了適合跨機器通訊的排隊綁定。
<configuration>
<system.serviceModel>
<bindings>
<netMsmqBinding>
語法
<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>
屬性和項目
下列章節說明屬性、子元素和父元素。
Attributes
| 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 開始,綁定和行為不再需要名稱。 欲了解更多關於預設設定及無名綁定與行為的資訊,請參閱簡化設定與簡化配置(Simplified Configuration for WCF Services)。 |
openTimeout |
一個 TimeSpan 指定開啟操作完成所需時間區間的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
QueueTransferProtocol |
一個有效 QueueTransferProtocol 值,指定此綁定所使用的排隊通訊通道傳輸。 MSMQ 在使用 SOAP 可靠訊息協定時不支援 Active Directory 位址。 因此,當該useActiveDirectory屬性被設定為 true時,你不應該將此屬性設為 SrmpSrmps 或 。 |
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 通訊基金會(WCF)佇列傳輸會將訊息佇列的 URI 轉換成直接格式名稱。 透過將屬性 UseActiveDirectory 設為 true,應用程式可以指定佇列中的傳輸應該使用 Active Directory 來解析電腦名稱,而非 DNS、NetBIOS 或 IP。 |
useMsmqTracing |
一個布林值,指定是否應該追蹤此綁定處理的訊息。 預設值為 false。 啟用追蹤時,每次訊息離開或抵達訊息佇列電腦時,都會產生並送入報告佇列。 |
useSourceJournal |
應將一個布林值指定此綁定處理的訊息副本,儲存在原始日誌中。 預設值為 false。排隊的應用程式若想保留已離開電腦發出佇列的訊息紀錄,可以將訊息複製到日誌佇列。 一旦訊息離開外發佇列,且收到訊息已在目的電腦收到的確認後,該訊息的副本會被保留在發送電腦的系統日誌佇列中。 |
子專案
| 元素 | Description |
|---|---|
| <讀者配額> | 定義了由端點可處理的 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>