Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Xếp hàng trong OneWay WCF Messages bằng Windows Service và SQL Server

Tôi là một DBA, vì vậy điều đó giúp tôi cảm nhận được phản hồi của tôi, nhưng đây là những gì tôi phải làm:

  1. Nếu bạn đang sử dụng SQL 2005+, hãy sử dụng Service Broker để lưu trữ các thông báo trong cơ sở dữ liệu thay vì lưu trữ chúng trong một bảng. Bạn nhận được cơ chế xếp hàng với điều này, vì vậy bạn có thể loại bỏ MSMQ. Bạn cũng sẽ có một bảng, nhưng nó sẽ chỉ lưu trữ xử lý cuộc trò chuyện (về cơ bản, một con trỏ đến tin nhắn) cùng với số lần nó đã thử gửi thông báo này. Cuối cùng, bạn sẽ muốn một số loại "hộp thư chết", nơi các thư đạt đến ngưỡng thử lại của bạn sẽ được gửi đi.
  2. Trong mã xử lý tin nhắn của bạn, hãy thực hiện như sau:
    • Bắt đầu giao dịch
    • Nhận thông báo từ hàng đợi
    • Nếu số lần thử lại lớn hơn ngưỡng, hãy chuyển nó vào ô chữ cái chết và cam kết
    • Tăng bộ đếm trên bàn cho thông báo này
    • Xử lý tin nhắn
    • Nếu quá trình xử lý thành công, hãy thực hiện giao dịch
    • Nếu quá trình xử lý không thành công, hãy đặt một thông báo mới vào hàng đợi có cùng nội dung và sau đó thực hiện giao dịch

Lưu ý rằng không có bất kỳ lần quay trở lại nào được lên kế hoạch. Rollbacks trong Service Broker có thể không tốt; nếu bạn quay lại 5 lần mà không nhận được thành công, hàng đợi sẽ bị vô hiệu hóa cho cả việc xếp hàng và xếp hàng lại. Nhưng bạn vẫn muốn có các giao dịch cho trường hợp khi bộ xử lý tin nhắn của bạn chết giữa quá trình xử lý (tức là máy chủ bị treo).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách trả lại giá trị Unicode cho một ký tự nhất định trong SQL Server - UNICODE ()

  2. Sửa lỗi Msg 512 “Truy vấn con trả về nhiều hơn 1 giá trị” trong SQL Server

  3. Kết hợp hai bảng không có trường chung

  4. Làm cách nào để liệt kê tất cả các khóa ngoại tham chiếu đến một bảng nhất định trong SQL Server?

  5. Cách thay đổi kiểu dữ liệu của cột trong SQL Server (T-SQL)