Bagikan melalui


Membangun Aplikasi dengan Service Broker

Berlaku untuk: SQL Server Azure SQL Managed Instance

Program apa pun yang dapat menjalankan pernyataan Transact-SQL dapat menggunakan Service Broker. Aplikasi Service Broker dapat diimplementasikan sebagai program yang berjalan di luar SQL Server, atau sebagai prosedur tersimpan yang ditulis dalam Transact-SQL atau bahasa .NET.

Program yang menggunakan Service Broker biasanya terdiri dari sejumlah komponen yang bekerja sama untuk menyelesaikan tugas. Program yang memulai percakapan membuat dan mengirim pesan ke layanan lain. Program tersebut mungkin menunggu respons, atau segera keluar dan mengandalkan program lain untuk memproses respons. Untuk layanan yang merupakan target percakapan, program menerima pesan masuk dari antrean untuk layanan, membaca data pesan, melakukan pemrosesan yang diperlukan, lalu membuat dan mengirim pesan respons jika sesuai.

Service Broker memperluas Transact-SQL. Aplikasi tidak memerlukan model objek atau pustaka khusus untuk bekerja dengan Service Broker. Sebagai gantinya, program mengirim perintah Transact-SQL ke SQL Server dan memproses hasil perintah tersebut. Aplikasi dapat diaktifkan oleh Service Broker, dapat berjalan sebagai layanan latar belakang, dapat berjalan sebagai pekerjaan terjadwal, atau dapat dimulai sebagai respons terhadap suatu peristiwa. Untuk informasi selengkapnya tentang strategi untuk memulai aplikasi yang menggunakan Service Broker, lihat Memilih Strategi Startup.

Untuk informasi tentang membuat aplikasi dengan Service Broker, lihat Manfaat Pemrograman dengan Service Broker.

Gambaran Umum Aplikasi Service Broker

Ilustrasi berikut menunjukkan interaksi dalam aplikasi yang menggunakan Service Broker:

Hubungan dan alur pesan dalam percakapan

Seperti yang ditunjukkan dalam ilustrasi, jenis pesan SubmitExpense, AcceptDenyExpense, dan ReimbursementIssued dibuat terlebih dahulu. Kontrak ProcessExpenses dibuat berdasarkan jenis pesan ini dan menyediakan skema untuk melakukan percakapan guna menyelesaikan tugas penggantian biaya. Kontrak ProcessExpenses mengatur semua percakapan antara layanan ProcessExpense dan layanan SubmitExpense . Kontrak ProcessExpenses dan jenis pesan yang digunakannya harus ada di database semua layanan yang memiliki percakapan berdasarkan kontrak ini.

Service Broker menyimpan pesan yang dikirim ke layanan SubmitExpense pada antrean untuk layanan tersebut. Prosedur tersimpan ExpenseSubmission menerima pesan dari antrean ini, memprosesnya, dan mengirim pesan ke layanan lain jika balasan diperlukan.

Service Broker menyimpan pesan yang dikirim ke layanan ProcessExpense pada antrean untuk layanan tersebut. Prosedur tersimpan ExpenseProcessing menerima pesan dari antrean ini, memprosesnya, dan mengirim pesan ke layanan lain jika balasan diperlukan.

Percakapan antara kedua layanan ini akan disusun sebagai berikut:

  • Pengguna mengirimkan permintaan penggantian biaya melalui antarmuka pengguna. Aplikasi ini menjalankan prosedur tersimpan ExpenseSubmission , yang membuat pesan SubmitExpense . Layanan SubmitExpense memulai percakapan dengan layanan ProcessExpense , lalu mengirim pesan SubmitExpense ke layanan ProcessExpense .

  • Service Broker menerima pesan SubmitExpense untuk layanan ProcessExpense dan menempatkan pesan pada antrean Antrean Pengeluaran. Antrean ExpenseQueue mengaktifkan prosedur tersimpan ProcessExpense, yang menghapus antrean dan memproses pesan SubmitExpense. Prosedur tersimpan ProcessExpense kemudian membuat pesan AcceptDenyExpense dan mengirim pesan ini ke layanan SubmitExpense . Jika pengeluaran ditolak, prosedur tersimpan ProcessExpense mengakhiri percakapan.

  • Service Broker menempatkan pesan AcceptDenyExpense untuk layanan SubmitExpense pada antrean untuk layanan. Jika prosedur ProcessExpense mengakhiri percakapan, Service Broker menempatkan pesan EndDialog pada antrean Pengeluaran. Antrean mengaktifkan prosedur tersimpan ExpenseSubmission , yang menghapus antrean dan memproses pesan AcceptDenyExpense . Jika prosedur tersimpan ExpenseSubmission menemukan pesan EndDialog pada antrean, prosedur akan mengakhiri percakapan.

  • Jika pengeluaran diterima, layanan ProcessExpense membuat dan mengirim pesan ReimbursementIssued yang mengonfirmasi bahwa pembayaran pengeluaran telah dikeluarkan, lalu mengakhiri percakapan. Service Broker menempatkan pesan ini pada antrean untuk layanan. Antrean mengaktifkan prosedur ExpenseSubmission , dan prosedur memproses pesan ReimbursementIssued . Prosedur kemudian memproses pesan EndDialog dan mengakhiri percakapan.

Lihat juga