Bagikan melalui


Pola Pertukaran untuk Adaptor Penerima

Menerima adaptor menerima data dari "kawat" dan mengirimkannya sebagai pesan ke BizTalk Server. Proses pengiriman ini dapat berupa pola pertukaran pesan satu arah atau dua arah.

One-Way Kirim

Agar adaptor penerima mengirimkan pesan ke BizTalk Messaging Engine, pertama-tama perlu membuat pesan BizTalk baru. Sampel kode dalam topik IBaseMessage menunjukkan bagaimana hal ini dilakukan. Aliran yang ditetapkan adaptor sebagai isi pesan biasanya harus berupa aliran terusan saja, yang berarti bahwa adaptor tidak boleh menyimpan data yang sebelumnya telah dibaca ke dalam memori.

Sebelum adaptor mengirimkan pesan ke mesin, adaptor harus menulis properti konteks pesan InboundTransportLocation di namespace sistem ke pesan BizTalk. Ini diilustrasikan dalam fragmen kode berikut:

Assembly References:

Microsoft.XLANGs.BaseTypes.dll

Microsoft.BizTalk.Pipeline.dll

Microsoft.BizTalk.GlobalPropertySchemas.dll

using Microsoft.BizTalk.Message.Interop;  
using Microsoft.XLANGs.BaseTypes;  
  
private static readonly PropertyBase InboundTransportLocationProp =   
new BTS.InboundTransportLocation();  
  
private void StampMsgCtxProps(  
IBaseMessage msg, string uri, string adapterType)  
{  
msg.Context.Write(  
 InboundTransportLocationProp.Name.Name,   
 InboundTransportLocationProperty.Name.Namespace,   
  uri);  
}  

Selain itu, adaptor dapat menentukan skema propertinya sendiri dan menulis properti konteks pesan yang berkaitan dengan titik akhir tempat ia menerima pesan. Misalnya, adaptor HTTP mungkin menulis header HTTP ke konteks pesan, dan penerima SMTP mungkin menulis subjek email ke konteks pesan. Informasi ini mungkin berguna untuk komponen hilir seperti komponen alur, jadwal orkestrasi, atau adaptor kirim.

Setelah pesan disiapkan, pesan dapat dikirimkan ke Mesin Olahpesan. Untuk melihat bagaimana adaptor penerima satu arah mungkin mengirimkan pesan ke mesin, lihat sampel kode SubmitDirect (Sampel BizTalk Server).

Request-Response

Adaptor penerima dua arah biasanya digunakan pada port penerima satu arah atau dua arah. Adaptor menentukan apakah lokasi penerima yang dilayvisikan adalah port satu arah atau dua arah dengan memeriksa tas properti konfigurasi BizTalk Server. Proses ini dijelaskan dalam Metode IBTTransportConfig.AddReceiveEndpoint (COM) dalam panduan UI dan referensi namespace API pengembang.

Diagram interaksi objek berikut mengilustrasikan proses melakukan pertukaran pesan respons permintaan. Adaptor meminta batch baru dari proksi transportasi dan meneruskan referensinya ke antarmuka IBTTransmitter melalui metode SubmitRequestMessage . Mesin Olahpesan mengirimkan pesan respons pada antarmuka ini dengan menggunakan metode TransmitMessage .

Karena mesin memproses pesan secara asinkron, hal berikut mungkin terjadi:

  • Panggilan balik BatchComplete mungkin terjadi sebelum Selesai telah kembali.

  • Panggilan ke TransmitMessage mungkin dilakukan sebelum BatchComplete dan bahkan sebelum Selesai.

    Meskipun kedua skenario ini jarang terjadi, adaptor harus melindungi dirinya dari ini.

    Disarankan agar pesan respons ditransmisikan menggunakan panggilan non-pemblokiran asinkron.

    Proyek BaseAdapter memiliki kelas utilitas, StandardRequestResponseHandler, yang merangkum semantik respons permintaan yang dijelaskan dalam topik ini.

Time-Outs Pesan Request-Response

Saat adaptor mengirimkan pesan permintaan, adaptor perlu menentukan waktu habis pesan permintaan pada API Metode IBTTransportBatch.SubmitRequestMessage (COM) dalam panduan UI dan referensi namespace API pengembang. Pesan respons akan dikirimkan ke adaptor hanya dalam periode waktu habis ini. Setelah waktu habis berakhir, pengakuan negatif (NACK) akan dikirimkan ke adaptor alih-alih pesan respons. Jika adaptor tidak menentukan nilai waktu habis, mesin menggunakan nilai default 20 menit.

Batas waktu default untuk pesan respons permintaan dapat dikontrol dengan menggunakan kunci registri berikut untuk adaptor penerima dalam proses:

DWORD

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc{Host Guid}\MessagingReqRespTTL

Kunci registri berada di lokasi yang berbeda untuk adaptor penerima yang terisolasi:

DWORD

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc.3.0\MessagingReqRespTTL

NACK (Acknowledgements negatif) adalah kesalahan SOAP dan ada dua cara untuk menanganinya. Biasanya adaptor mengembalikan NACK ke klien dan klien menangani NACK. Atau alur pengiriman yang menangani pesan respons dapat dikonfigurasi untuk mengubah konten pesan respons, dengan menggunakan peta atau komponen alur kustom.