Điều đó có thể xảy ra, nhưng trong thế giới thực phức tạp hơn một chút so với cách tiếp cận ngây thơ mà bạn hình dung. Về cơ bản, không thể chấp nhận việc trình kích hoạt chờ một yêu cầu HTTP:
- Đối với một ứng dụng, ứng dụng của bạn sẽ dừng thu thập thông tin vì trình kích hoạt sẽ chặn tài nguyên (chủ yếu là khóa) đang chờ phản hồi từ một số dịch vụ WWW ở xa.
- Thứ hai, tinh tế hơn nhưng tệ hơn nhiều, là vấn đề về tính đúng đắn khi có các lần quay lại. Nếu giao dịch được cấp cho các yêu cầu HTTP quay trở lại, không có cách nào để 'hoàn tác' yêu cầu HTTP.
Giải pháp là tách trình kích hoạt khỏi yêu cầu HTTP thông qua một hàng đợi. Trình kích hoạt xếp hàng yêu cầu vào hàng đợi cục bộ và cam kết, trong khi một phần xử lý riêng biệt xếp hàng các yêu cầu này và đưa ra yêu cầu HTTP. Điều này giải quyết cả hai vấn đề đã chỉ ra ở trên. Bạn có thể sử dụng bảng thông thường cho hàng đợi (xem Sử dụng bảng làm hàng đợi) hoặc bạn có thể sử dụng Service Broker, cả hai đều hoạt động tốt.
Bây giờ về cách dequeue yêu cầu này và thực sự thực hiện cuộc gọi HTTP, tôi thực sự khuyên bạn nên sử dụng một quy trình chuyên dụng (tức là một ứng dụng dành riêng cho mục đích này). Tuy có thể sử dụng SQLCLR nhưng đó là một lựa chọn rất tồi. Tài nguyên SQL Server (cụ thể là nhân viên) là rất quý giá để lãng phí khi chờ đợi phản hồi từ Internet.