Các nhóm hội thoại là một primitve cục bộ được sử dụng để khóa. Tin nhắn trong một nhóm trò chuyện không có đảm bảo thứ tự và các nhóm trò chuyện không được chuyển qua đường dây.
Thứ tự tin nhắn được đảm bảo bởi Service Broker trong một cuộc trò chuyện. Vì vậy, để duy trì thứ tự của các tin nhắn đã soạn thảo trong quá trình xử lý, hãy gửi chúng trên cùng một cuộc hội thoại.
Cần có các nhóm hội thoại để tổng hợp một nhóm hội thoại có liên quan đến nhau. Cả GET CONVERSATION GROUP
và RECEIVE
các động từ đảm bảo rằng chúng sẽ khóa toàn bộ nhóm liên kết, do đó ngăn không cho bất kỳ luồng nào khác xử lý các thông điệp liên quan. Ví dụ, hãy xem xét một trang web du lịch. Nó nhận được một tin nhắn với yêu cầu đặt một gói kỳ nghỉ. Do đó, nó bắt đầu cuộc trò chuyện với dịch vụ đặt phòng khách sạn và gửi yêu cầu đặt phòng, nó bắt đầu cuộc trò chuyện với dịch vụ đặt phòng hàng không và yêu cầu đặt chỗ du lịch, nó bắt đầu cuộc trò chuyện với dịch vụ đại lý cho thuê ô tô và yêu cầu đặt xe. Ba cuộc trò chuyện mới mà nó tạo ra đều nằm trong cùng một nhóm với cuộc trò chuyện ban đầu nhận được yêu cầu (ứng dụng đã sử dụng WITH RELATED_CONVERSATION
mệnh đề BEGIN DIALOG trên cả 3 người trong số họ). Sau đó nó sẽ cam kết và tiến hành xử lý các thông báo trong hàng đợi. Các phản hồi sau đó từ 3 yêu cầu tương quan này bắt đầu đến, vào những thời điểm khá ngẫu nhiên. Giả sử khách sạn được nghỉ ngơi trước. Tin nhắn được ứng dụng tiếp nhận và nó sẽ tiếp tục cập nhật trạng thái của yêu cầu với phản hồi từ khách sạn. Đồng thời, phản hồi của hãng hàng không đến. Nếu một chuỗi khác được phép lấy nó, nó sẽ cố gắng cập nhật trạng thái của cùng một yêu cầu, do đó dẫn đến việc chặn hoặc thậm chí là bế tắc đối với chuỗi đang xử lý phản hồi của khách sạn. Khi phản hồi của khách sạn được xử lý, chuỗi sẽ cam kết và do đó mở khóa toàn bộ nhóm hội thoại, cho phép bất kỳ chuỗi nào (bao gồm cả chính nó) nhận phản hồi của hãng hàng không và xử lý.