Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pialang Layanan Server Sql

Grup percakapan adalah lokal hanya konsep, digunakan secara eksklusif untuk mengunci:percakapan yang berkorelasi termasuk dalam grup sehingga saat Anda memproses pesan pada satu percakapan, utas lain tidak dapat memproses pesan yang terkait. Tidak ada informasi tentang grup percakapan yang dipertukarkan oleh dua titik akhir, jadi dalam contoh Anda semua titik akhir pemrakarsa akhirnya menjadi milik satu grup percakapan, tetapi titik akhir target masing-masing adalah grup percakapan yang berbeda (setiap grup hanya memiliki satu percakapan). Alasan sistem berperilaku seperti ini adalah karena grup percakapan dirancang untuk mengatasi masalah seperti, katakanlah, layanan pemesanan perjalanan:ketika menerima pesan untuk 'memesan perjalanan', ia harus memesan penerbangan, hotel, dan mobil persewaan. Itu harus mengirim tiga pesan, satu ke masing-masing layanan ini ('penerbangan', 'hotel', 'mobil') dan kemudian tanggapan akan kembali, secara tidak sinkron. Ketika mereka kembali, pemrosesan harus memastikan bahwa mereka tidak diproses secara bersamaan oleh utas terpisah, yang masing-masing akan mencoba memperbarui status catatan 'perjalanan'. Dalam perpesanan, masalah ini dikenal sebagai 'masalah korelasi pesan'.

Namun, sering kali grup percakapan dikerahkan di SSB semata-mata untuk alasan kinerja:mereka memungkinkan hasil RECEIVE yang lebih besar. Titik akhir target dapat dipindahkan bersama ke dalam grup dengan menggunakan MOVE CONVERSATION tetapi dalam praktiknya ada trik yang lebih sederhana:membalikkan arah pembicaraan. Tentukan tujuan Anda memulai percakapan (dikelompokkan), dan sumber mengirimkan 'pembaruannya' pada percakapan yang dimulai oleh tujuan.

Beberapa catatan:

  • Jangan gunakan pola fire-and-forget dari BEGIN/SEND/END. Anda membuat tidak mungkin untuk mendiagnosis masalah apa pun di masa mendatang, lihat Api dan Lupakan:Baik untuk militer, tetapi tidak untuk percakapan Service Broker .
  • Jangan pernah menggunakan WITH CLEANUP dalam kode produksi. Hal ini dimaksudkan untuk tindakan terakhir administratif seperti pemulihan bencana. Jika Anda menyalahgunakannya, Anda menolak kesempatan SSB untuk melacak pesan dengan benar untuk pengiriman coba lagi yang benar (jika pesan memantul pada target, karena alasan apa pun, pesan itu akan hilang selamanya).
  • SSB tidak menjamin keteraturan di seluruh percakapan, hanya dalam satu percakapan. Memulai percakapan baru untuk setiap acara INSERT tidak menjamin untuk mempertahankan, sesuai target, urutan operasi penyisipan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Cara Menghitung Baris di Tabel SQL Server dengan Pro dan Kontra

  2. Cara Mengubah Model Pemulihan Database SQL Server menggunakan T-SQL

  3. Menggunakan SQL Server sebagai antrian DB dengan banyak klien

  4. Pivot data di T-SQL

  5. SYSUTCDATETIME() vs GETUTCDATE() di SQL Server:Apa Bedanya?