7

Kịch bản:làm nhiều công nhân Azure vai trò bầu cử cùng Queue gây chết Khóa hoặc thông điệp Poison

nếu tôi đã spin off nhiều vai trò lao động hoặc ONE Worker vai trò với nhiều chủ đề, mà các cuộc thăm dò các thư mới trong Azure Queue.

Ai đó có thể vui lòng xác nhận xem đây có phải là phương pháp thiết kế chính xác không? Lý do tôi muốn có nhiều vai trò công nhân là tăng tốc độ PROCESSJOB. Ứng dụng của chúng tôi phải ở gần thời gian thực, tức là ngay sau khi có thông báo chúng tôi sẽ nhận được, áp dụng các quy tắc kinh doanh phức tạp và cam kết với AZURE DB. Chúng tôi đang mong đợi 11.000 tin nhắn mỗi 3 phút.

Cảm ơn bạn.

Trả lời

16

Bạn có thể có nhiều trình đọc hàng đợi tùy thích. Nó rất phổ biến để mở rộng các trường hợp vai trò của nhân viên, vì tất cả chúng có thể đọc từ cùng một hàng đợi, cung cấp cho bạn thông lượng công việc lớn hơn nhiều.

Khi bạn đọc một tin nhắn xếp hàng, nó được đánh dấu là "vô hình" trong một khoảng thời gian, để ngăn người khác đọc và làm công việc tương tự. Chủ sở hữu của tin nhắn phải xóa nó trước khi khoảng thời gian hết hạn, nếu không thông báo sẽ hiển thị lại và một ngoại lệ sẽ được ném khi người đọc ban đầu tìm cách xóa nó. Điều này có nghĩa là các hoạt động của bạn phải là không có giá trị.

Không có xử lý tin nhắn độc hại trực tiếp, nhưng thật dễ dàng để thực hiện, vì mỗi tin nhắn đều có số đếm dequeue. Chỉ cần kiểm tra và loại bỏ các thông điệp độc sau khi được đọc 3-4 lần. Bạn cũng có thể tự động điều chỉnh khoảng thời gian chờ dựa trên số đếm dequeue, vì có thể quá trình xử lý không thành công do cửa sổ thời gian quá ngắn.

Đây là MSDN documentation cho DequeueCount.

EDIT: Theo cách xử lý 11.000 thư trong 3 phút: mục tiêu khả năng mở rộng cho hàng đợi là 2.000 TPS hoặc tối đa 360.000 giao dịch trong 3 phút (vượt quá yêu cầu thông báo 11.000 bạn có). Bạn có thể tăng tốc mọi thứ bằng cách kết hợp các thông điệp vào một tin nhắn xếp hàng đơn, cũng như đọc nhiều tin nhắn cùng một lúc, điều này cũng sẽ làm giảm số lượng giao dịch của bạn. Bạn cũng có thể xem xét thuộc tính ApproximateMessageCount của hàng đợi để xem hàng đợi của bạn có đang sao lưu không (và sau đó mở rộng ra các chất bổ sung để giúp tiêu thụ các mục trong hàng đợi).

+0

Cảm ơn bạn @David Makogon để có câu trả lời chi tiết. Cảm kích điều đó. –