Tôi làm việc trên ứng dụng web là ứng dụng dựa trên đám mây nhiều người thuê (nhiều khách hàng, mỗi khách hàng có "môi trường" riêng biệt, nhưng tất cả trên bộ phần cứng được chia sẻ) và chúng tôi đang giới thiệu khả năng người dùng thực hiện hàng loạt công việc để xử lý sau này. Các loại công việc theo lô thực sự không quan trọng, nó chỉ đủ số lượng mà làm việc đó mà không có hàng đợi công việc không thực sự thực tế. Chúng tôi đã chọn RabbitMQ làm khung xếp hàng cơ bản của chúng tôi. Vì chúng tôi là một ứng dụng đa người thuê nhà, chúng tôi không nhất thiết muốn khách hàng có thể gây ra thời gian xử lý hàng đợi dài cho một khách hàng khác, do đó, một ý tưởng mà chúng tôi đã nổi lên là tạo hàng đợi trên mỗi cơ sở khách hàng và có một nhóm công nhân được chia sẻ chỉ trên tất cả các hàng đợi của khách hàng của chúng tôi. Vấn đề là, theo điều tốt nhất mà tôi có thể hình dung, người lao động trực tiếp bị ràng buộc vào một hàng đợi cụ thể, không phải là một sự trao đổi. Trong thế giới lý tưởng của chúng tôi, hàng đợi của khách hàng của chúng tôi sẽ vẫn được xử lý, mà không có khách hàng nào chặn khác, từ một nhóm công nhân được chia sẻ mà chúng tôi có thể tăng hoặc thu hẹp khi cần thiết bằng cách khởi chạy nhiều công nhân hơn hoặc đóng cửa không hoạt động. Có công nhân gắn với một hàng đợi cụ thể ngăn cản chúng tôi từ này trong một ý nghĩa thực tế, như chúng tôi thường xuyên có rất nhiều công nhân chỉ chạy không tải trên một hàng đợi không có hoạt động.Hàng công nhân và hàng đợi nhiều người thuê nhà với RabbitMQ
Có tương đối thẳng về phía trước để thực hiện việc này không? Tôi khá mới với RabbitMQ và không thực sự có thể đạt được những gì chúng tôi đang theo đuổi. Chúng tôi cũng không muốn phải viết một ứng dụng người dùng đa luồng rất phức tạp, đó là thời gian chìm trong thời gian thử nghiệm và dev mà chúng tôi có thể không đủ khả năng. Ngăn xếp của chúng tôi là Windows/.Net/C# dựa trên nếu đó là germaine, nhưng tôi không nghĩ rằng cần phải có một mang lớn trong câu hỏi trong tầm tay.
Tôi không hỏi về việc gán nhiều công nhân cho cùng một hàng đợi, tôi sắp hỏi về điều ngược lại. Tôi muốn một nhóm công nhân hữu hạn tiêu thụ từ một lượng lớn (chúng ta hãy gọi nó là ~ 500) số hàng đợi. – bakasan
Tôi đã thử nghiệm trực tiếp với kiểu tiếp cận này và nó không đẹp: thật khó để tìm ra một heuristic phù hợp để xử lý tất cả các hàng đợi này. Bạn có xử lý trước hàng đợi đầy đủ nhất không? Hoặc những người có tin nhắn cũ hơn? Trong cả hai trường hợp, bạn đã ra khỏi giao thức AMQP và phải bắt đầu giao dịch với API quản lý Rabbit. Sau đó, bạn nghĩ: chúng ta hãy có cùng số hàng đợi hơn so với công nhân và bạn thêm một số ánh xạ băm nhất quán giữa 500 Q và hàng đợi công nhân. Sau đó, bạn nhận ra rằng một hàng đợi và n công nhân cạnh tranh trên đó là tất cả những gì bạn cần. –
Tôi có một yêu cầu tương tự, tuy nhiên tôi muốn đảm bảo thông điệp từ một khách hàng cụ thể được xử lý tuần tự. Một số liên lạc không bị xóa trước khi nó được tạo ra vv Có một số cấu hình hoặc thiết lập của RabbitMQ có thể làm điều này chưa chia sẻ hàng đợi giữa các công nhân? (Đây có phải là một Q mới ...?) – Aaron