2015-11-30 39 views
0

我正在使用Cake 3.xCake 3.x如何爲作業和新聞提要設置隊列技術?

我需要設置以下內容。

  1. 作業隊列排隊需要在後臺長時間處理的工作
  2. 的飼料(如Facebook飼料),告知發生了什麼應用程序

此範圍內發生的各種用戶是我在需求方面:

作業隊列

這需要持久和r eliable。這意味着如果服務器突然重新啓動,排隊但尚未執行的任何作業仍會在等待重新啓動時處理。

新聞頻道/活動流

這不一定是持久的,可延遲。就像Facebook一樣。基本上是顯示發生的事件。

喜歡的東西

User1 commented on your post. (2 seconds ago) 
User2 liked your post. (3 mins ago) 
User2 & User1 favorited your post (5 mins ago) 

我應該在Cake3 Web應用程序的環境中使用什麼樣的隊列?

我應該使用什麼隊列技術

  1. 作業隊列(需要持久性,作業的順序也很重要)
  2. 新聞供稿/活動流(無需執着,順序並不重要)

在Cake 3.x Web應用程序的上下文中?

我是排隊技術的新手。我很高興能夠使用Amazon消息隊列服務(SQS)等雲計算隊列服務。

我更喜歡與CakePHP 3.x體系結構配合使用的解決方案。也許是一個CakePHP插件?

我也可以設置2個不同的隊列技術來滿足2個不同的要求。

回答

1

支持蛋糕2 & 3受歡迎的CakePHP的插件:https://github.com/dereuromark/cakephp-queue

我相信它會適合你以及你的作業隊列。但是,從頭開始編寫代碼不會太困難。您可以擁有一個具有以下屬性的表,例如:job_type,priority,min_execute_date,completed等。然後安排一個cron作業來執行您自己的定製Shell,該查詢將查詢該表並查找具有最高優先級的作業尚未完成。它會檢查job_type並運行相關任務。如果他們成功完成,將其標記爲已完成。這種設置不會錯過任何工作。

新聞提要可能類似,但我不認爲您需要調度程序。將其併入您的應用程序邏輯。你會有一個新聞源,這將只是最近的項目的運行列表。你所說的聽起來像通知。對於通知,您可以將它們設置爲一旦他們點擊它們或查看它們,就可以將它們從列表中刪除或對它們進行設置。