Breaking News
Loading...
03/02/2014

Service Broker trong SQL Server

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.
Microsoft cung cấp 2 giải pháp xử lý dữ liệu bất đồng bộ là MSMQ và SQL Server Service Broker.

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

 
Toggle Footer