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

Antrian dalam Pesan WCF OneWay menggunakan Layanan Windows dan SQL Server

Saya seorang DBA, jadi ini yang membuat respons saya terasa, tapi inilah yang akan saya lakukan:

  1. Jika Anda menggunakan SQL 2005+, gunakan Service Broker untuk menyimpan pesan dalam database daripada menyimpannya dalam tabel. Anda mendapatkan mekanisme antrian dengan ini, sehingga Anda dapat menyingkirkan MSMQ. Anda juga akan memiliki tabel, tetapi itu hanya akan menyimpan pegangan percakapan (pada dasarnya, penunjuk ke pesan) bersama dengan berapa kali ia mencoba pesan ini. Terakhir, Anda akan menginginkan semacam "kotak surat mati" tempat pesan yang mencapai ambang coba lagi.
  2. Dalam kode pemrosesan pesan Anda, lakukan hal berikut:
    • Memulai transaksi
    • Menerima pesan dari antrian
    • Jika jumlah percobaan ulang lebih besar dari ambang batas, pindahkan ke kotak surat mati dan komit
    • Tambahkan penghitung di atas meja untuk pesan ini
    • Memproses pesan
    • Jika pemrosesan berhasil, lakukan transaksi
    • Jika pemrosesan gagal, masukkan pesan baru ke antrian dengan konten yang sama, lalu lakukan transaksi

Perhatikan bahwa tidak ada rollback yang direncanakan. Rollback di Service Broker bisa berakibat buruk; jika Anda melakukan rollback 5 kali tanpa penerimaan yang berhasil, antrian akan dinonaktifkan baik untuk enqueuing maupun dequeuing. Namun Anda tetap ingin melakukan transaksi jika pemroses pesan Anda mati di tengah pemrosesan (mis. server mogok).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jalankan prosedur tersimpan menggunakan kerangka entitas

  2. Bandingkan DATETIME dan DATE dengan mengabaikan porsi waktu

  3. Cara Menambahkan File Data ke Database SQL Server (T-SQL)

  4. Penyebaran LocalDB pada PC klien

  5. Grup SQL Server berdasarkan Hitungan DateTime Per Jam?