2

私はosxでPHPを使用してウサギを使用しています。

簡単な例。50K の永続的なメッセージを持つ 1 つの永続的なキューがあります。コンシューマ スクリプトを実行します。そのスクリプトの例があります:

...
while ($this->run) {
    if ($message = $channel->basic_get("testq.{$this->id}")) {
        $channel->basic_ack($message->delivery_info['delivery_tag']);
        echo "{$message->delivery_info['routing_key']} (".$message->get('priority')."): {$message->body}\n";
        $sleep = 15000; // usecs
    } else {
        usleep($sleep);
    }
    ...
}
...

コンシューマー スクリプトを実行した後、うさぎの webadmin で、そのキューからのメッセージ数が減少していることがわかります。

すべて問題ないようです。

CTRL+C を使用して PHP コンシューマー スクリプトを強制終了し、たとえば 10K のメッセージが消費されるまでスクリプトを停止すると、40K のメッセージがキューに残っていることがわかります。

大丈夫です。

しかし、消費者スクリプトの実行中に (クラッシュをシミュレートしたい)、kill -9 または CRLT+C で rabbitmq を強制終了すると、そのキューの再起動メッセージ数が 50K に復元されます。

なぜだか分からない?どこに問題があるのでしょうか?

4

0 に答える 0