2016-05-13 12 views
0

私は働いているRabbitMQサーバーを持っていますが、私は1つのことに固執しています。RabbitMQ - 送信タスクのインラインループ

私はMySQLテーブルを持っています。ここでは1行です。しかし、すべての行が処理されると、新しい行(1行が処理される約20の新しい行)があります。私は彼を停止するまで時間行の後に無限に実行さプロデューサー、およびプロセスの行を作成する方法を

私は右、プロデューサーがタイムアウトに死んでしまうと思いますか?

そして、どのように条件ながら書くには?このようなことを試しても、処理時間に追加された行には影響しません。

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

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

は、私は別の解決策は、cronジョブであることを、知っているが、私はWindows上でそれを実行しているので、それは、私にとっては理想的ではないですし、タスクスケジューラは、わずか5分でリピートすることができます。それほどではない。

ありがとうございます。

答えて

0

行の各処理でさらに多くの行が生成されると、アルゴリズムは決して終了しません。私はあなたが終了条件を持つ必要がありますね。

メッセージングシステムでは、プロデューサとコンシューマが必要です。プロデューサは明示的にRabbitMQにメッセージを送信し、メッセージの処理準備が整うと自動的に呼び出されるコンシューマを設定するだけです。あなたのメッセージで

あなたが処理するために、行の目のIDを持つ必要があります。消費者はこの行を処理するだけで、新しい行を作成したり、新しい行のメッセージを送信して終了したりすることができます。消費者は新しいメッセージのために呼び出されます。

あなたのグローバルな処理が処理するために、これ以上のメッセージがあるだろうときに終了します。

managngメッセージの方法は、多くのメッセージを短時間で製造されている場合は、複数のサーバー間で負荷分散を持つことができます。

関連する問題