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

Nhà môi giới dịch vụ máy chủ Sql

Các nhóm trò chuyện là một cục bộ chỉ khái niệm, được sử dụng riêng để khóa:các cuộc hội thoại tương quan thuộc về một nhóm để trong khi bạn xử lý một tin nhắn trên một cuộc hội thoại, một chuỗi khác không thể xử lý một tin nhắn tương quan. Không có thông tin về các nhóm hội thoại được trao đổi bởi hai điểm cuối, vì vậy trong ví dụ của bạn, tất cả các điểm cuối của trình khởi tạo đều thuộc về một nhóm hội thoại, nhưng các điểm cuối đích là một nhóm hội thoại riêng biệt (mỗi nhóm chỉ có một hội thoại). Lý do hệ thống hoạt động như vậy là do các nhóm hội thoại được thiết kế để giải quyết một vấn đề, chẳng hạn như dịch vụ đặt chuyến đi:khi nó nhận được thông báo 'đặt chuyến đi', nó phải đặt trước chuyến bay, khách sạn và ô tô. cho thuê. Nó phải gửi ba tin nhắn, một tin nhắn cho mỗi dịch vụ này ('chuyến bay', 'khách sạn', 'ô tô') và sau đó các phản hồi sẽ quay lại một cách không đồng bộ. Khi chúng quay trở lại, quá trình xử lý phải đảm bảo rằng chúng không được xử lý đồng thời bởi các luồng riêng biệt, mỗi luồng sẽ cố gắng cập nhật trạng thái bản ghi 'chuyến đi'. Trong nhắn tin, vấn đề này được gọi là 'vấn đề tương quan tin nhắn'.

Tuy nhiên, các nhóm hội thoại thường được triển khai trong SSB chỉ vì lý do hiệu suất:chúng cho phép các kết quả NHẬN lớn hơn. Các điểm cuối mục tiêu có thể được chuyển cùng nhau thành một nhóm bằng cách sử dụng MOVE CONVERSATION nhưng trong thực tế có một mẹo đơn giản hơn nhiều:đảo ngược hướng của cuộc trò chuyện. Có điểm đến của bạn bắt đầu cuộc trò chuyện (được nhóm lại) và nguồn gửi 'cập nhật' của nó về (các) cuộc trò chuyện được bắt đầu bởi đích.

Một số lưu ý:

  • Không sử dụng mô hình cháy và quên BEGIN / SEND / END. Bạn không thể chẩn đoán bất kỳ sự cố nào trong tương lai, hãy xem Fire and Forget:Tốt cho quân đội, nhưng không tốt cho các cuộc trò chuyện với Service Broker .
  • Không bao giờ sử dụng WITH CLEANUP trong mã sản xuất. Nó được dành cho hành động hành chính cuối cùng như khắc phục thảm họa. Nếu bạn lạm dụng nó, bạn sẽ từ chối SSB bất kỳ cơ hội nào để theo dõi chính xác tin nhắn để thử gửi lại chính xác (nếu tin nhắn bị gửi đến mục tiêu, vì bất kỳ lý do gì, tin nhắn đó sẽ bị mất vĩnh viễn).
  • SSB không đảm bảo thứ tự giữa các cuộc hội thoại, chỉ trong một cuộc hội thoại. Bắt đầu một cuộc hội thoại mới cho mỗi sự kiện INSERT không đảm bảo duy trì, đúng mục tiêu, thứ tự của các hoạt động chèn.



  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 tạo dạng xem trong SQL Server

  2. Chuyển đổi ‘time’ thành ‘datetimeoffset’ trong SQL Server (Ví dụ T-SQL)

  3. Nối các giá trị hàng T-SQL

  4. Chỉ kích hoạt cập nhật SQL khi cột được sửa đổi

  5. Toán tử logic AND trong SQL Server là gì - Hướng dẫn sử dụng SQL Server / TSQL Phần 120