2015-06-02 16 views
7

Tôi đang phát triển một ứng dụng bằng Azure Cloud Service và api web. Tôi muốn cho phép người dùng tạo phiên tư vấn khả năng thay đổi giá của phiên đó, tuy nhiên tôi muốn cho phép tất cả người dùng 30 ngày rời khỏi phiên trước khi giá mới ảnh hưởng đến giá cho tất cả các thành viên hiện đăng ký phiên. Suy nghĩ đầu tiên của tôi là sử dụng lưu trữ hàng đợi và đặt thời gian chờ hiển thị trong giới hạn thời gian 30 ngày, nhưng điều này có vẻ như điều này có thể tăng hàng đợi nhanh chóng theo thời gian, đặc biệt nếu thông báo không chạy trong 30 ngày; chưa kể đến các vấn đề đặt hàng. Tôi cũng đang xem xét công cụ lập kế hoạch nhiệm vụ, nhưng các thay đổi về giá phiên không phải là một khái niệm định kỳ nhưng ngẫu nhiên hơn. Ý tưởng hàng đợi là một cách tiếp cận tốt hay là có cách tốt hơn và hiệu quả hơn để thực hiện việc này?Các tác vụ cần được thực hiện vào một ngày nhất định trong Azure

+1

Xin lưu ý rằng TTL tin nhắn tối đa trên Hàng đợi Azure là 7 ngày. –

+1

Tôi nhận thấy rằng cũng như trong bài viết so sánh hàng đợi lưu trữ và hàng đợi dịch vụ xe buýt. Trong kịch bản này, là lựa chọn duy nhất có sẵn của tôi để đặt công việc trong một bảng cơ sở dữ liệu và kiểm tra mỗi ngày? Cách tiếp cận này có vẻ giống như một nguồn tài nguyên trên cơ sở dữ liệu. – user1790300

Trả lời

3

Tôi nghĩ kịch bản này phù hợp hơn để sử dụng Azure Scheduler. Lập trình tạo Công việc với một lần lặp lại với ngày đã đặt là 30 ngày sau đó để chạy một lần. Khi công việc này được trình lên lịch tự động kích hoạt, hãy gán một hành động để gọi lại cho một trong các API/Dịch vụ của bạn để thực hiện các cập nhật bắt buộc khác và cũng xóa Công việc này khỏi người lập lịch như một phần của hành động này để có danh sách việc làm sạch. Dù sao kế hoạch cao cấp của bộ sưu tập công việc Azure Scheduler sẽ cung cấp cho bạn số lượng công việc không giới hạn để chạy.

Hy vọng điều này là chính xác những gì bạn đang tìm kiếm ...

+1

Bạn có thể thấy giới hạn của Azure Scheduler tại đây - https://github.com/Azure/azure-content/blob/master/articles/scheduler-plans-billing.md –

3

tôi sẽ xem xét sử dụng WebJobs Azure. WebJob về cơ bản cung cấp cho bạn khả năng chạy ứng dụng giao diện điều khiển .NET trong ngữ cảnh của Azure Web App. Nó có thể được chạy theo yêu cầu, liên tục, hoặc để đáp ứng với một lịch trình tái diễn. Nếu yêu cầu xử lý của bạn thấp và cho phép, chúng cũng có thể chạy trong cùng một quá trình mà Ứng dụng web của bạn đang chạy để tiết kiệm cho bạn $$$ khi chúng được miễn phí theo cách đó.

Bạn có thể lên lịch WebJob để chạy một hoặc hai lần mỗi ngày và kiểm tra tình huống và phản ứng như là thích hợp. Vì nó thực sự chỉ là một vai trò công nhân .NET bạn có sự linh hoạt tối thượng.

4

Nội dung bạn đang cố gắng thực hiện phải được thực hiện bằng cơ sở dữ liệu quan hệ. Bạn có thể sử dụng dấu thời gian để ghi lại khi giá cho phiên thay đổi. Tôi sẽ không sử dụng một hàng đợi nào cả. Một hàng đợi là nhiều hơn cho việc truyền tải thông điệp trong một hệ thống phân tán. Vấn đề của bạn chỉ là theo dõi những gì giá thay đổi vào những gì phiên và khi nào. Dữ liệu đó nên được mô hình hóa trong cơ sở dữ liệu.

+0

Cách tiếp cận này có vẻ như nó sẽ là sạch nhất, nhưng trong môi trường xanh, tôi vẫn không cần sử dụng bộ lập lịch để chạy mỗi ngày để tìm tất cả các thay đổi? – user1790300

+0

Dựa trên nhận xét của bạn "thay đổi giá phiên không phải là một khái niệm định kỳ nhưng ngẫu nhiên hơn" - có vẻ như mọi người sẽ sử dụng API của bạn để nhận thông tin giá cả vào các thời điểm ngẫu nhiên. Tôi khuyên bạn nên sử dụng bộ nhớ cache để lưu vào bộ nhớ cache giá hiện tại và có mẫu đọc qua để tính lại giá mới nếu bộ nhớ cache đã hết hạn. Khi bạn tính lại giá mới, hãy đặt chúng trở lại trong bộ nhớ cache để có thể truy xuất nhanh chóng tại cuộc gọi tiếp theo. Thời gian chờ bạn đặt trên bộ nhớ cache sẽ phản ánh số lượng thời gian tối đa bạn muốn đi mà không cần tính toán lại giá mới nhất, vài giờ đến một ngày có lẽ là tốt. –

Các vấn đề liên quan