2015-06-02 17 views
7

Azure Bulut Hizmeti ve web api kullanarak bir uygulama geliştiriyorum. Bir danışma oturumu oluşturan kullanıcıların o seansın fiyatını değiştirebilme yetisine izin vermek istiyorum, ancak tüm kullanıcıların 30 gün boyunca oturumu terk etmelerini istiyorum. Yeni fiyat, şu an için kaydolmuş olan tüm üyelerin fiyatını etkilemeden önce oturum, toplantı, celse. İlk düşüncem sıra depolamayı kullanmak ve 30 günlük zaman sınırı için görünürlük zaman aşımını ayarlamaktır, ancak bu durum özellikle mesajın 30 gün boyunca çalıştırılmaması gerektiğinde, zamanla gerçekten hızlı bir şekilde büyüyebilir; Sipariş sorunlarından bahsetmiyorum. Görev zamanlayıcıya da bakıyorum ama oturum fiyatlandırma değişiklikleri tekrarlayan bir konsept değil, daha rasgele. Sıra fikri iyi bir yaklaşım mıdır yoksa bunu başarmak için daha iyi ve daha etkili bir yol var mı?Belirli bir tarihte gerçekleştirilmesi gereken görevler Azure

+1

Azure Kuyrukları üzerindeki azami mesaj TTL'in 7 gün olduğunu lütfen unutmayın. –

+1

Kuyruk depolama ve servis veri yolu kuyruklarını karşılaştıran makalede de bunu fark ettim. Bu senaryoda, bir veritabanı tablosuna iş koymak ve her gün kontrol etmek için tek mevcut seçenek nedir? Bu yaklaşım, veritabanında bir kaynak tahliyesi gibi görünüyor. – user1790300

cevap

3

Bu senaryoyu Azure Scheduler'ı kullanmak için daha uygun olduğunu düşünüyorum. Programlı olarak bir kez tekrarlamak için 30 gün sonra ayarlanmış tarih ile bir kez tekrarlayın. Bu iş programlayıcı tarafından otomatik olarak tetiklendiğinde, & diğer gerekli güncellemeleri yapmak için API/Hizmetinizin geri aranması için bir eylem atayın ve ayrıca temiz bir iş listesinin olması için bu İşin bu eylemin bir parçası olarak bu işten kaldırılmasını sağlayın. Her neyse Azure Zamanlayıcı İş Koleksiyonu'nun premium planı, çalıştırmak için sınırsız sayıda iş verecektir.

Umut bu ben Azure WebJobs kullanmayı düşünün için ...

+1

Azure Zamanlayıcısı'nın sınırlarını burada görebilirsiniz - https://github.com/Azure/azure-content/blob/master/articles/scheduler-plans-billing.md –

3

olacağını aradığını tam olarak budur. Bir WebJob, temel olarak bir Azure Web Uygulaması bağlamında bir .NET konsol uygulaması çalıştırma yeteneği sunar. Sürekli olarak ya da tekrarlanan bir programa yanıt olarak talep üzerine çalıştırılabilir. İşleme gereksinimleriniz düşükse ve buna izin veriyorsa, Web Uygulamanızın çalıştığı aynı işlemde de çalışabilir ve böylece bu şekilde ücretsiz olarak sizi tasarruf edebilirsiniz.

WebJob'ı günde bir veya iki kez çalışacak şekilde planlayabilir ve durumu inceleyebilir ve uygun şekilde yanıt verebilirsiniz. Gerçekten sadece bir .NET çalışanı rolü olduğu için nihai esnekliğiniz var.

4

Yapmaya çalıştığınız şeyler ilişkisel bir veritabanıyla yapılmalıdır. Oturum fiyatları değiştiğinde kaydetmek için zaman damgalarını kullanabilirsiniz. Bunun için hiç sıra kullanmazdım. Bir sıra, dağıtılmış bir sistemdeki iletileri iletmek için daha fazladır. Sorununuz sadece hangi seanslarda ve ne zaman değiştiğini takip etmektir. Bu veri bir veritabanında modellenmelidir.

+0

Bu yaklaşım en temiz olacak gibi görünüyor ama masmavi ortamda, tüm değişiklikleri bulmak için her gün çalıştırmak için programlayıcıyı kullanmaya gerek yok mu? – user1790300

+0

Yorumunuza göre "oturum fiyatlandırma değişiklikleri yinelenen bir kavram değil, daha rasgele" - insanların rasgele zamanlarda fiyatlandırma bilgisi almak için API'nizi kullanacağı gibi görünüyor. Mevcut fiyatları önbelleğe almak için bir önbellek kullanmanızı öneriyorum ve önbellemin süresi dolduğunda yeni fiyatları yeniden hesaplamak için bir okuma modeline sahip olmayı öneriyorum. Yeni fiyatları yeniden hesapladıktan sonra bunları önbelleğe geri koyun, böylece bir sonraki görüşmede hızlıca alınabilir. Önbellekte ayarladığınız zaman aşımı, en son fiyatları yeniden hesaplamaksızın gitmek istediğiniz maksimum süreyi yansıtmalıdır, güne birkaç saat geçmesi muhtemeldir. –

İlgili konular