2016-05-13 94 views
0

我有一個工作的RabbitMQ服務器,但我陷入了一件事。RabbitMQ - 無限循環發送任務

我有一個MySQL表,現在有一行。但是每處理一行都會有新的行(約有20行,每行處理1行)。

如何編寫一個無限制運行的生產者,並連續處理幾個小時直到我阻止他?

我覺得Producer會在超時時死掉吧?

以及如何寫條件?因爲如果我會嘗試這樣的事情,它不會影響在處理時間中添加的行。

$sql = "SELECT columns FROM `table`"; 
$result = mysqli_query($con,$sql); 

while($row = mysqli_fetch_assoc($result)) { 
} 

我知道,那另一種解決方案是cron作業,但它不是理想的我,因爲我運行它在Windows和任務調度程序只允許5分鐘重複。不低於。

在此先感謝。

回答

0

如果每行處理產生更多行,那麼您的算法將永遠不會終止。我想你應該有一個終止條件。

在消息傳遞系統上,你應該有生產者和消費者。生產者明確地發送消息到RabbitMQ,你應該只配置消費者,當消息準備好處理時它將被自動調用。

在您的消息中,您應該有要處理的行的ID。您的使用者只是處理這一行,可能會創建新行,爲新行發送消息並終止。消費者將被調用以獲得新消息。

當沒有更多消息要處理時,您的全局處理將終止。

如果在短時間內生成很多消息,管理消息的方式允許在多個服務器之間進行負載平衡。