非同步傳送配接器介面
每次傳送一個訊息的配接器可以同步或非同步地傳送訊息。 配接器在執行傳送作業期間使用個別執行緒,而不封鎖傳輸 Proxy 執行緒時,它會非同步傳送訊息。 為了能夠非同步傳送訊息,配接器必須實作下列介面:
IBTTransport
IBaseComponent
IBTTransportControl
IPersistPropertyBag
IBTTransmitter
下列步驟說明傳送配接器在「傳訊引擎」要求下,為了從伺服器中傳輸訊息,所執行的動作順序:
傳訊引擎會藉由呼叫IBTTransmitter介面的TransmitMessage方法,使用傳輸 Proxy 將傳出訊息傳遞至傳送配接器。
配接器會在儲存要傳送至某些內部佇列的訊息之後,立即從 TransmitMessage 傳回,並傳回
False
bDeleteMessage。 這會告知「傳訊引擎」,訊息將會以非同步方式傳輸。配接器使用專屬的執行緒集區傳送訊息。
在傳送作業完成之後,配接器會從 MessageBox 資料庫刪除原始訊息。 它會使用傳輸 Proxy 的 IBTTransportBatch.GetBatch 方法,從傳訊引擎取得批次,然後呼叫 DeleteMessage。
下圖顯示建立非同步傳送配接器時所包含的物件互動。
非同步傳送訊息的工作流程
注意
建議配接器應計算目前處理中訊息的數目。 配接器應該封鎖 Terminate 方法,直到訊息計數達到零為止。 對於傳送配接器而言,應該會以適當方式處理進行中的訊息。 這表示,已成功非同步傳遞的任何訊息都應該從配接器的私用應用程式訊息佇列中刪除,以免將訊息傳送兩次。 一般而言, 在 Messaging Engine 呼叫 Terminate 之後,它不接受從配接器發佈新訊息的要求。 唯一的例外是請求-回應組相關的回應訊息。
另請參閱
配接器變數
開發傳送配接器
具現化並初始化傳送配接器
同步傳送配接器介面
同步批次支援傳送配接器介面
非同步批次支援傳送配接器介面
交易式非同步批次支援傳送配接器介面
請求-回應傳送配接器介面