共用方式為


<msmqIntegrationBinding>

定義一種綁定,透過 MSMQ 路由訊息來提供佇列支援。

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding>
          <msmqIntegrationBinding>

語法

<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>

屬性和項目

下列各節說明屬性、子元素和父元素

Attributes

Attribute Description
結束 時間 一個 TimeSpan 指定緊密操作完成所需時間間隔的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。
自訂死信排隊列 一個包含每個應用程式死信佇列位置的 URI,該位置放置已過期或傳輸或傳遞失敗的訊息。

死信佇列是發送應用程式佇列管理器中,用於未送達過期訊息的佇列。

所指定的 CustomDeadLetterQueue URI 必須使用 net.msmq 方案。
死信排隊 一個 DeadLetterQueue.value 來指定要使用哪種類型的死字母佇列(如果有的話)

死信佇列是指未能送達應用程式的訊息將被轉移的位置。

對於需要精確一次保證(即 exactlyOnce 屬性設定為 true),此屬性預設為 MSMQ 中的系統範圍交易死信佇列。

對於不需要保證的訊息,此屬性預設為 null
耐用 一個布林值,表示訊息在佇列中是持久還是易失。 持久訊息能在隊列管理器崩潰後存活,而揮發性訊息則無法存活。 當應用程式需要較低延遲且能容忍偶爾遺失訊息時,揮發性訊息非常有用。 若屬性 exactlyOnce 設為 true,訊息必須具備持久性。 預設值為 true
沒錯,曾經 一個布林值,表示每個訊息是否只被送達一次。 寄件人將收到送達失敗通知。 當 durablefalse,這個屬性會被忽略,訊息會被傳送,且沒有傳遞保證。 預設值為 true。 如需詳細資訊,請參閱ExactlyOnce
最大接收訊息大小 一個正整數,定義了此綁定處理的最大訊息大小(以位元組計,包含標頭)。 超過此限制的訊息發送者將收到 SOAP 錯誤。 接收端會丟棄訊息,並在追蹤日誌中建立事件的條目。 預設是 65536。 這種訊息大小限制旨在限制遭受阻斷服務(DoS)攻擊的風險。
maxRetryCycles 一個整數表示毒訊偵測功能所使用的重試週期數。 當訊息在所有週期中所有投遞嘗試都失敗時,該訊息即成為毒訊息。 預設值為 2。 如需詳細資訊,請參閱MaxRetryCycles
名稱 一個包含綁定設定名稱的字串。 這個值應該是唯一的,因為它是用來識別裝訂的。 從 .NET Framework 4 開始,綁定和行為不再需要名稱。 欲了解更多關於預設設定及無名綁定與行為的資訊,請參閱簡化設定與簡化配置(Simplified Configuration for WCF Services)。
openTimeout 一個 TimeSpan 指定開啟操作完成所需時間區間的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。
接收錯誤處理 一個 ReceiveErrorHandling 指定如何處理毒訊息和不可分派訊息的值。
收到重試計數 一個整數,指定若應用程式佇列向應用程式傳送訊息失敗,隊列管理器應嘗試的最大即時重試次數。

若投遞嘗試次數達到最大,且應用程式未存取訊息,則訊息會被送入重試隊列,待日後再送達。 訊息被傳送回傳送隊列的時間長短由 控制 retryCycleDelay。 若重試週期達到該 maxRetryCycles 值,則訊息要麼送入毒訊息隊列,要麼將否定確認回傳給發送者。
收到Timeout 一個 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。 啟用追蹤時,每次訊息離開或抵達訊息佇列電腦時,都會產生並送入報告佇列。
使用SourceJournal 應將一個布林值指定此綁定處理的訊息副本,儲存在原始日誌中。 預設值為 false

排隊的應用程式若想保留已離開電腦發出佇列的訊息紀錄,可以將訊息複製到日誌佇列。 一旦訊息離開外發佇列,且收到訊息已在目的電腦收到的確認後,該訊息的副本會被保留在發送電腦的系統日誌佇列中。

{serializationFormat}屬性

價值觀 Description
Xml XML 格式
Binary 二進位格式
ActiveX ActiveX 格式
位元組陣列 將物件序列化為位元組陣列。
Stream 正文格式化為串流

子專案

元素 Description
<安全> 定義綁定的安全設定。 此元素的類型 MsmqIntegrationSecurityElement為 。

父項目

元素 Description
<裝訂> 此元素包含標準與自訂裝訂的集合。

備註

此綁定元素可用於 Windows 通訊基礎(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>

另請參閱