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
Trả lời
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 ...
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 –
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.
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.
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
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. –
- 1. Thực hiện tác vụ nền trong Javascript
- 2. Thực hiện các tác vụ song song
- 3. Azure ACS - Thực hiện tốt nhất Thực hiện
- 4. Thực hiện SQL trong tác vụ Gradle?
- 5. Chạy nhiệm vụ bó async khi một trật tự thực hiện nhất định cần phải được bảo tồn
- 6. Cách thực hiện các thao tác ngày trong hibernate
- 7. Thực hiện tác vụ Ant với Maven
- 8. Làm cách nào để thực hiện các thao tác lịch trong Java GWT? Cách thêm ngày vào một ngày?
- 9. cách thực hiện tác vụ theo lịch trong sailsjs
- 10. Trình lập lịch biểu tác vụ Windows để thực hiện các tác vụ trong vài giây
- 11. Thực hiện tác vụ không đồng bộ trong Flask
- 12. Thực hiện các tác vụ song song với async/await
- 13. Cách lên lịch một tác vụ trong cửa sổ vai trò công nhân azure
- 14. Làm cách nào để thực hiện tác vụ phụ thuộc vào tác vụ khác trong sbt 0,12?
- 15. Cách thực hiện các tác vụ được sắp xếp trong Maven2 build
- 16. Cần tây - Nhận id tác vụ cho tác vụ hiện tại
- 17. Tác vụ chạy dài (hoặc mãi mãi) trên Windows Azure
- 18. Đầu vào tác vụ so với các nguồn tác vụ
- 19. Gọi lại khi một tác vụ định kỳ bị hủy và thực hiện
- 20. Được ScheduledThreadPoolExecutor ok để thực hiện nhiều tác vụ cùng một lúc?
- 21. Thực hiện tác vụ gỡ cài đặt trong android
- 22. Thực hành tốt nhất LongRunning Tạo tác vụ
- 23. Kiểm soát thứ tự thực hiện Tác vụ với ExecutorService
- 24. Cách để thực hiện các tác vụ CPU bị ràng buộc trong các nút bấm
- 25. Thực hiện Thanh tác vụ: ABSherlock hoặc ABCompat?
- 26. Thực tiễn hủy bỏ tác vụ tốt nhất
- 27. Thực hiện tác vụ ở chế độ nền trong JavaFX
- 28. cách bạn có thể định cấu hình mùa xuân để thực hiện các tác vụ cố định chồng chéo?
- 29. Các tác vụ định kỳ nhanh trong RT Linux
- 30. Dừng một Tác vụ mà không cần ThrowIfCancellationRequested
Xin lưu ý rằng TTL tin nhắn tối đa trên Hàng đợi Azure là 7 ngày. –
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