Tôi muốn xây dựng dịch vụ cửa sổ sẽ sử dụng dịch vụ mã hóa từ xa (như encoding.com, zencoder, v.v.) để tải lên các tệp video để mã hóa, tải chúng xuống sau quá trình mã hóa hoàn thành và xử lý chúng. Để làm được điều đó, tôi đã suy nghĩ về việc có hàng đợi khác nhau, một để xử lý các tệp đang chờ, một cho tệp đang được tải lên, một tệp cho tệp đang chờ mã hóa hoàn thành và một tệp khác để tải chúng xuống. Mỗi hàng đợi có một giới hạn, ví dụ chỉ có 5 tệp có thể được tải lên để mã hóa tại một thời điểm nhất định. Hàng đợi phải được hiển thị và có thể hồi sinh từ một sự cố - hiện tại chúng tôi làm điều đó bằng cách viết hàng đợi vào một bảng SQL và quản lý số lượng các mục trong một bảng riêng biệt.Thiết kế: Câu hỏi quản lý hàng đợi (C#)
Tôi cũng muốn hàng đợi chạy trong nền, độc lập với nhau, nhưng có thể chuyển tệp từ hàng đợi này sang hàng đợi khác khi quá trình tiếp tục.
Dấu hỏi lớn nhất của tôi là về cách xây dựng hàng đợi và quản lý chúng, và ít hơn về việc giới hạn số lượng mục trong mỗi hàng đợi.
Tôi không chắc cách tiếp cận phù hợp cho điều này và thực sự đánh giá cao sự trợ giúp nào.
Cảm ơn!
Cảm ơn, nó rất hữu ích nhưng câu hỏi của tôi đã cố gắng nhắm đến việc quản lý hàng đợi riêng biệt hơn. Bài đăng trên blog của bạn hữu ích. cảm ơn! – Nir
Tôi đồng ý với Fredrik. Nếu bạn tạo 4 hàng đợi và gán một luồng cho mỗi (hoặc số luồng tương tự), có thể một hàng đợi chậm (một hàng đợi chịu trách nhiệm cho một quy trình chạy dài) sẽ làm chậm toàn bộ quá trình của bạn vì hàng đợi đó bận nhưng các chủ đề trong hàng đợi khác đang ngồi và không làm gì cả.Trong mọi trường hợp, việc tinh chỉnh các số luồng này có thể khó khăn. – Aliostad
Khi nó quay ra, bài đăng trên blog cực kỳ hữu ích. Cảm ơn rất nhiều! – Nir