1. AMQP_EX_TYPE_DIRECT: 直接接続タイプ
直接接続タイプには、1 対 1 および 1 対 N (N 対 1、N 対 N) も含まれます。
受信側の受信.phpコードは次のとおりです。
れーれー
送信側のsend.phpコードは次のとおりです。
れーれー
実行結果は図のようになります
見やすくするために、receive_one.php と accept_two.php を作成し、send.php コードを次のコードに変更します。
accept_one.php と accept_two.php には同じコードがあるか、dos を使用して複数の受信機を実行します
れーれー
send.php
れーれー
実行結果は以下の通りです
キューは、配布と処理のためにメッセージを各受信側に配布します。これは完璧に見えますが、さまざまなタスクをより適切に処理したい場合は、
公平なスケジューリング が必要です。
たとえば、1 と 3 が単純な人を扱い、2 と 4 が複雑なタスクを扱う場合、タスクが多すぎると、receive_one.php はアイドル状態になり、receive_two.php には重いタスクが含まれます。
以下のようなテストを行っております
send.phpを5から50に変更します
れーれー
accept_two.php と sleep(3)
れーれー
プログラムを実行すると、結果は次のようになります
すべての accept_one が実行された後、receive_two は 1 つだけ実行されます。その後、receive_one はアイドル状態になります。
受信側で設定するには、次のようにします。
$channel->setPrefetchCount(1);
新しいメッセージは、誰もタスクを完了しなくなるまで受信されず、メッセージは他の受信者に送信されます。
以下のように、receive_one.phpとreceive_two.php
リーリー
以下に変更してください
れーれー
http://www.bkjia.com/PHPjc/735888.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/735888.html技術記事 1. AMQP_EX_TYPE_DIRECT: 直接接続タイプ。直接接続タイプには、1 対 1 および 1 対 N (N 対 1、N 対 N) も含まれます。connect();$channel = new AMQPChannel($)。接続します); $exchange...