2012-10-08 45 views
2

我需要設置一個作業隊列,通過Web界面計劃長時間運行的作業隊列。然後在多個盒子上運行。我還需要能夠刪除和重新排列隊列中的作業。Perl分佈式作業隊列

目前我們所有的代碼都在perl中。我正在尋找使用像ApacheMQ,Gearman,Resque等東西...

問題,以前提到的其中一個更適合工作,那麼不同的軟件解決方案呢?我只是寫了一個MySQL/Perl隊列的創意計劃,但這非常困難。我更喜歡一個體面的Web界面,並有一個接口到Perl。純粹的MySQL/Perl將是理想的。

謝謝

回答

4

是的,自己寫一個好的是很困難的。以下是我可以通過我的經驗告訴你的信息:

CPAN上的Schwartz是一個很好的可靠工作隊列,它使用mysql作爲後備存儲。

Gearman是一個不可靠但低延遲的隊列,具有不同的功能集。

這兩個都沒有Web界面,但他們有良好的命令行界面,以查看正在進行的工作以及隊列中的狀態。

您可以使用MQ消息隊列作爲解決方案,但這些是消息傳遞隊列,與作業管理不完全相同,您必須自己處理計劃,重試和失敗等事情。

我見過通過STOMP通過Perl訪問的ActiveMQ現在嘗試並在兩個項目中失敗。

RabbitMQ超級穩定(去吧,Erlang!),相當有效。

這兩個都有消息排隊部分很好的網絡接口。

+0

謝謝。通過TheSchwartz的CPAN文檔查看,我找不到任何重新排序工作的方式。另外,看起來這些工作是隨機抽取的?(每項工作可能需要30分鐘才能完成,因此用戶不會對隨機順序感到滿意)。另外,我不確定是否可以同時運行多個工作。另外,我需要記分卡系統爲基於數據庫,因爲喬布斯將在不同的機器上運行,而且我需要一個狀態頁面。 我可以處理事物的調度部分。我真正需要的是有一個add_job和get_job方法,以及reorder_jobs,get_status和list_all_jobs方法。 – Smartelf