Giới thiệu Service Broker:
Khi bạn cần xây dựng một ứng dụng bất đồng bộ với SQL Server, ví dụ 1 ứng dụng đặt hàng online. Ta xem kịch bản sau:- Khi khách hàng đặt hàng xong, bấm nút ‘Kết thúc’.
- Máy chủ của ta nhận được dữ liệu, lúc này vẫn chưa lưu vô database mà lưu vô hàng đợi (dùng Service Broker trong SQL Server)
- Ngay sau đó người dùng nhận được thông báo đại loại như ‘thông tin đặt hàng đã được tiếp nhận, chúng tôi sẽ liên hệ với bạn sau’.
- Rồi đến 1 thời điểm nào đó, thông tin đặt hàng này lần lượt được lấy ra hàng đợi và xử lý tuần tự, lúc này mới chính thức được lưu vào database.
Cho dù có hàng trăm, hàng nghìn người đặt hàng cùng lúc, thì dữ liệu đều được lưu vô hàng đợi, và xử lý tuần tự theo nguyên tắc FIFO – First in First out, sẽ đảm bảo hệ thống hoạt động ổn định, không bị thắt cổ chai.
Service Broker còn được xem như một giải pháp Load Balancing trong SQL Server.
Nếu dùng Service Broker, yêu cầu là database phải online. Khi cấu hình thì SQL Server Management Studio không hỗ trợ giao diện để ta cấu hình, mà ta phải dùng T-SQL.
Trước tiên phải enable Service Broker, có thể dùng SSMS hay lệnh sau:
ALTER DATABASE sample_database SET ENABLE_BROKER
Sau đó tạo Message Type
CREATE MESSAGE TYPE YourMessageType AUTHORIZATION dbo VALIDATION = WELL_FORMED_XML
--Tiếp theo tạo 1 object là Contract
CREATE CONTRACT MyContract AUTHORIZATION dbo (YourMessageType SENT BY ANY) CREATE CONTRACT MyContract AUTHORIZATION dbo (YourMessageType SENT BY INITIATOR, AnotherMessageType SENT BY TARGET)Tiếp theo ta cần set up Queue, Queue sẽ tạo ra những table vật lý trong database. Khi setup Queue ta để ý vài option sau: Retention: nếu là On, sau khi message được nhận, nó sẽ không bị remove khỏi Queue, nếu là off, ngay sau khi message được nhận, nó sẽ được remove khỏi Queue.
0 comments:
Post a Comment