Contoh Perutean Microsoft SQL Server Service Broker

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Bagian ini menyajikan contoh proses perutean Service Broker. Setiap contoh berisi contoh tabel perutean untuk AdventureWorks2008R2 dan msdb, dan menjelaskan bagaimana Service Broker menggunakan tabel perutean tersebut untuk memilih rute pesan.

Catatan

Contoh divalidasi pada SQL Server 2008 R2 (10.50.x). Sebaiknya gunakan AdventureWorks2008R2 database sampel dari database sampel AdventureWorks untuk menyelesaikan contoh.

SQL Server Service Broker didukung dalam versi SQL Server saat ini.

Tabel perutean yang disajikan dalam topik ini adalah versi sederhana dari tampilan katalog sys.routes . ID rute dan pemilik tidak penting untuk proses perutean, dan semua rute dianggap memiliki masa pakai yang tidak terbatas.

Nilai NULL di kolom remote_service_name cocok dengan nama layanan apa pun. Nilai NULL di kolom broker_instance cocok dengan pengidentifikasi Service Broker apa pun.

Contoh untuk pesan keluar tidak menggunakan tabel perutean di msdb, dan contoh untuk pesan masuk dan penerusan pesan tidak menggunakan tabel perutean untuk AdventureWorks2008R2.

Contoh 1: Konfigurasi Default

Contoh ini menjelaskan konfigurasi default untuk perutean Service Broker. Secara default, semua database kecuali master berisi rute AutoCreatedLocal . Oleh karena itu, tabel perutean untuk AdventureWorks2008R2 dan msdb berisi informasi berikut.

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

Dalam hal ini, semua dialog yang dibuat dalam database AdventureWorks2008R2 dikirimkan ke layanan dalam instans saat ini. Selain itu, semua dialog yang tiba dari luar instans dikirimkan ke layanan dalam instans saat ini.

Untuk percakapan yang dibuat di AdventureWorks2008R2, AutoCreatedLocal adalah satu-satunya rute di AdventureWorks2008R2.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Prosesnya sama untuk percakapan yang tiba dari luar instans. Untuk percakapan yang tiba dari luar instans, AutoCreatedLocal adalah satu-satunya rute di msdb.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Contoh 2: Rute Jaringan ke Layanan Tertentu

Contoh ini menjelaskan konfigurasi perutean umum untuk layanan di luar instans saat ini. Untuk mengonfigurasi rute ke layanan eksternal, buat rute di database yang memulai percakapan. Dalam contoh ini, AdventureWorks2008R2 berisi rute untuk layanan OrderParts. Rute berisi alamat jaringan untuk layanan OrderParts .

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

OrderPartsRoute

OrderParts

NULL

TCP://host2.Adventure-Works.com:4022/

NULL

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

Dalam hal ini, semua dialog yang dibuat dalam database AdventureWorks2008R2 ke layanan OrderParts cocok dengan rute OrderPartsRoute. Service Broker mengirimkan pesan ini ke alamat jaringan TCP://host2.Adventure-Works.com:4022/. Semua percakapan lain dikirimkan ke layanan dalam instans yang sama.

Untuk percakapan yang dibuat di AdventureWorks2008R2 dengan layanan target OrderParts, kumpulan rute yang cocok berisi OrderPartsRoute, karena rute ini sama persis dengan nama layanan. OrderPartsRoute adalah satu-satunya rute dalam serangkaian rute yang cocok, sehingga Service Broker memilih rute tersebut.

Untuk percakapan yang dibuat di AdventureWorks2008R2 ke layanan target yang berbeda, kumpulan rute yang cocok berisi AutoCreatedLocal. Karena ini adalah satu-satunya rute dalam serangkaian rute yang cocok, Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, Service Broker menandai percakapan TERTUNDA.

Untuk percakapan yang tiba dari luar instans, AutoCreatedLocal adalah satu-satunya rute di msdb.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Contoh 3: Rute Jaringan ke Database Cermin

Contoh ini menjelaskan konfigurasi perutean umum untuk layanan yang dihosting oleh database cermin di luar instans saat ini. Untuk mengonfigurasi rute ke layanan eksternal, buat rute di database yang memulai percakapan. Dalam contoh ini, AdventureWorks2008R2 berisi rute untuk layanan OrderParts. Rute berisi alamat jaringan dan alamat cermin untuk layanan OrderParts .

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

OrderPartsRoute

OrderParts

NULL

TCP://partner1.Adventure-Works.com:4022/

TCP://partner2.Adventure-Works.com:4022/

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

Untuk percakapan yang dibuat di AdventureWorks2008R2 dengan layanan target OrderParts, kumpulan rute yang cocok berisi OrderPartsRoute, karena rute ini sama persis dengan nama layanan. OrderPartsRoute adalah satu-satunya rute dalam serangkaian rute yang cocok, sehingga Service Broker memilih rute tersebut. Service Broker memeriksa alamat dan alamat cermin untuk menentukan mitra mana yang merupakan prinsipal, lalu mengirim pesan ke perwakilan.

Untuk percakapan yang dibuat di AdventureWorks2008R2 ke layanan target yang berbeda, kumpulan rute yang cocok berisi AutoCreatedLocal. Karena ini adalah satu-satunya rute dalam serangkaian rute yang cocok, Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, Service Broker menandai percakapan TERTUNDA.

Untuk percakapan yang tiba dari luar instans, AutoCreatedLocal adalah satu-satunya rute di msdb.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Contoh 4: Rute Jaringan ke Semua Layanan Eksternal

Contoh ini mengirim pesan dari layanan di AdventureWorks2008R2 ke instans yang berbeda kecuali layanan ada di instans lokal. Perhatikan bahwa pesan untuk layanan apa pun yang tidak ada dalam instans lokal masuk ke alamat jaringan yang sama. Konfigurasi ini mungkin berguna jika instans SQL Server di alamat jaringan tersebut melakukan penerusan pesan.

Dalam contoh ini, database AdventureWorks2008R2 berisi rute AutoCreatedLocal serta rute ke alamat TCP://forwarding.Adventure-Works.com:4022/.

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

ExternalRoute

NULL

NULL

TCP://forwarding.Adventure-Works.com:4022/

NULL

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

Untuk percakapan yang dibuat di AdventureWorks2008R2, kumpulan rute yang cocok berisi AutoCreatedLocal dan ExternalRoute, karena nama layanan jarak jauh dan instans broker sama untuk kedua rute. Service Broker harus memilih antara kedua rute ini. Service Broker memilih rute dengan alamat 'LOCAL' sebelum rute yang menentukan alamat jaringan, sehingga Service Broker terlebih dahulu memilih AutoCreatedLocal. Jika layanan target ada di instans lokal, Service Broker menggunakan rute ini dan mengirimkan pesan ke layanan tersebut. Namun, jika layanan target tidak ada di instans lokal, Service Broker memilih ExternalRoute.

Untuk percakapan yang tiba dari luar instans, AutoCreatedLocal adalah satu-satunya rute di msdb.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Contoh 5: Rute Jaringan ke Instans Layanan yang Berbeda

Contoh ini menunjukkan konfigurasi perutean di mana dua alamat jaringan yang berbeda menghosting instans yang berbeda dari layanan yang sama. Konfigurasi ini mungkin berguna untuk konfigurasi penyeimbangan beban.

Dalam contoh ini, database AdventureWorks2008R2 berisi rute AutoCreatedLocal serta rute ke layanan BalancedService.

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

BalancedRouteOne

BalancedService

5fb8d92b-ed69-4c80-afbb-2aa6a7d3cb2d

TCP://server1.Adventure-Works.com:4022/

NULL

BalancedRouteTwo

BalancedService

81b1d3d0-288e-4d2c-b1d3-456cbb944b4f

TCP://server2.Adventure-Works.com:4022/

NULL

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

Untuk percakapan yang dibuat dalam database AdventureWorks2008R2 ke layanan BalancedService yang tidak menentukan pengidentifikasi Service Broker, kumpulan rute yang cocok berisi BalancedRouteOne dan BalancedRouteTwo. Karena rute berisi pengidentifikasi Service Broker yang berbeda, proses pencocokan secara segan-segan memilih pengidentifikasi Service Broker dan cocok dengan rute tersebut. Karena hanya satu kecocokan rute, Service Broker memilih rute tersebut untuk percakapan. Hasilnya adalah bahwa beberapa percakapan merutekan ke TCP://server1.Adventure-Works.com:4022/, dan percakapan lainnya dirutekan ke TCP://server2.Adventure-Works.com:4022/. Namun, setelah Service Broker menerima pengakuan untuk pesan dalam percakapan, Service Broker menggunakan pengidentifikasi Service Broker yang terkandung dalam pengakuan untuk pesan lain dalam percakapan. Setelah pengakuan pertama diterima, semua pesan di masa mendatang pada percakapan dirutekan menggunakan pengidentifikasi Service Broker dalam pengakuan.

Untuk percakapan yang dibuat dalam database AdventureWorks2008R2 ke layanan BalancedService yang menentukan salah satu pengidentifikasi Service Broker dalam tabel perutean, kumpulan rute yang cocok berisi rute yang cocok dengan pengidentifikasi Service Broker. Percakapan merutekan ke alamat dalam rute dengan pengidentifikasi Service Broker tersebut.

Untuk percakapan yang dibuat di AdventureWorks2008R2 ke layanan target yang berbeda, kumpulan rute yang cocok hanya berisi AutoCreatedLocal. Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, Service Broker menandai percakapan TERTUNDA.

Untuk percakapan yang tiba dari luar instans, AutoCreatedLocal adalah satu-satunya rute di msdb.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Contoh 6: Penerusan Pesan untuk Layanan Tertentu

Contoh ini meneruskan pesan dari luar instans lokal ke layanan ElsewhereService ke alamat jaringan TCP://elsewhere.Adventure-Works.com:4022/. Untuk semua layanan lainnya, Service Broker mengirimkan pesan ke layanan dalam instans lokal atau menandai percakapan TERTUNDA jika layanan tidak ada di instans lokal.

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

ForwardingRoute

Di tempat lainService

NULL

TCP://elsewhere.Adventure-Works.com:4022/

NULL

Untuk percakapan yang dibuat di AdventureWorks2008R2, AutoCreatedLocal adalah satu-satunya rute di AdventureWorks2008R2.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, Service Broker menandai percakapan TERTUNDA. Perhatikan bahwa percakapan yang dibuat di AdventureWorks2008R2 ke layanan ElsewhereService tidak dirutekan ke TCP://elsewhere.Adventure-Works.com:4022/.

Untuk percakapan yang tiba dari luar instans ke layanan ElsewhereService, rute ForwardingRoute sama persis dengan nama layanan. Oleh karena itu, ForwardingRoute adalah satu-satunya rute dalam kumpulan rute yang cocok, dan Service Broker memilih rute tersebut saat penerusan pesan aktif. Service Broker memilih rute ini meskipun instans lokal berisi layanan ElsewhereService. Jika penerusan pesan nonaktif, Service Broker akan menjatuhkan pesan.

Untuk percakapan yang tiba dari luar instans ke semua layanan lain, AutoCreatedLocal adalah satu-satunya rute yang cocok di msdb.sys.routes. Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, pesan akan dihilangkan.

Contoh 7: Penerusan Pesan untuk Semua Layanan Tidak dalam Instans

Contoh ini mengirim pesan dari luar instans lokal ke instans yang berbeda kecuali layanan ada di instans lokal. Perhatikan bahwa pesan untuk semua layanan eksternal masuk ke alamat jaringan yang sama. Konfigurasi ini mungkin berguna untuk penerusan pesan.

AdventureWorks2008R2.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

msdb.sys.routes

nama

remote_service_name

broker_instance

alamat

mirror_address

AutoCreatedLocal

NULL

NULL

LOKAL

NULL

ForwardingRoute

NULL

NULL

TCP://forwarding.Adventure-Works.com:4022/

NULL

Untuk percakapan yang dibuat di AdventureWorks2008R2, AutoCreatedLocal adalah satu-satunya rute di AdventureWorks2008R2.sys.routes. Rute itu adalah satu-satunya rute dalam set rute yang cocok, dan Service Broker memilih rute tersebut. Jika layanan untuk pesan tidak ada di instans lokal, Service Broker menandai percakapan TERTUNDA.

Untuk percakapan yang tiba dari luar database, kumpulan rute yang cocok berisi AutoCreatedLocal dan ForwardingRoute, karena kedua rute menentukan nama layanan jarak jauh dan pengidentifikasi Service Broker yang sama. Service Broker harus memilih antara kedua rute ini. Service Broker memilih rute dengan alamat 'LOCAL' sebelum rute yang menentukan alamat jaringan, sehingga Service Broker terlebih dahulu memilih AutoCreatedLocal. Jika layanan target ada di instans lokal, Service Broker menggunakan rute ini dan mengirimkan pesan ke layanan tersebut. Namun, jika layanan target tidak ada di instans lokal, dan penerusan pesan aktif, Service Broker memilih ForwardingRoute. Jika penerusan pesan tidak aktif, Service Broker menghilangkan pesan jika layanan target tidak ada di instans lokal.

Baca juga