1、インストールAMQPは拡大し、インストールプロセスを
2、ツールキットのphp-amqplibをダウンロード
作曲のphp-amqplib / PHP-amqplibが必要です
図3に示すように、コードは以下の
[消費者]のニュース
。1 <?PHP 2 // 設定情報 。3 $ conn_args = アレイ( 4 'ホスト' => '127.0.0.1'、 。5 'ポート' => '5672'、 6 'ログイン' => 'ZCW'、 7 「パスワード'=>' 123456 ' 8 'バーチャルホスト'=>' /' 9。 ); 10 $ e_name =' EXCHANGE1 '; //は、スイッチ名 11。 $ q_name =' QUEUE1 '; // キューの名前 12は、 $ k_route =' route1の' ;// ルート設定キー 13 14 //接続とチャンネルの作成 15 $ CONN = 新しい AMQPConnection($ conn_args )。 16 もし(!$ CONN - > 接続()){ 17 、ダイ( "ブローカーに接続できません\ n個!" ); 18 } 19 $チャネル = 新しい AMQPChannel($ CONN )。 20 21 // 创建交换机 22 $の元 = 新しい AMQPExchange($チャンネル); 23 $の元 - >のsetName($ e_name )。 24 $の元 - > はsetType(AMQP_EX_TYPE_DIRECT); // ダイレクトタイプ(一般的に使用されるファンアウト、直接、トピック、ヘッダ) 25 $ EX - >でsetFlags(AMQP_DURABLEは); // 持続 26は、ある 27 28 キュー作成// 29 $ Q = 新新 AMQPQueue($チャンネル); 30 $ Q - >のsetName($のq_name ); 31である $ Q - >でsetFlags(AMQP_DURABLE); // 永続 32 33である $合計 = $ Q - > declareQueue(); // メッセージ番号の全てを取得 34は、 35 / /スイッチと結合キューと指定されたルートキー 36 $ Q - >バインド(e_name $、$ k_route ); 37 [ 38は、 // 1、ブロッキングメッセージ受信モード。 39 ながら(真){ 40 $ Q - > 'processMessage'(消費); 41れる // $ Q->)AMQP_AUTOACK、 'processMessage'(消費; //自動ACK応答 42 } 43が 44であり、 // 2の非ブロッキングモードと、メッセージが定期的に呼び出し受信することができる 45 //(合計$){IF 46は //のために{($ I = 0; $ I ++; $ Iは$合計<) 47 // $ $ = Q-エンベロープ> GET(); 48 // IF($エンベロープ){ 49 // envelope- $ $ MSG => getBody(); 50 //エコーの$ MSG "\ n" ; // 処理メッセージ 51である // $ Q-> ACK($ envelope-> getDeliveryTag()); //手動変速ACK応答 52 //} 53 } // 54 // } 55 56である $コネチカット - > 切断(); 57れている 58 / * * 59 *消費コールバック関数 60 *プロセスメッセージ 61である * / 62である 関数 processMessage($エンベロープ、$キュー){ 63が $ MSG = $エンベロープ - > )getBody( ; 64 エコー の$ MSG "\ N-"; // プロセスのメッセージ 65 $キュー - > ACK($封筒 - > getDeliveryTag()); // 手動でACK応答送信 66 } 67 >?
[製造ニュースサービス
。1 <?PHP 2 // 設定情報 。3 $ conn_args = アレイ( 4 'ホスト' => '127.0.0.1'、 。5 'ポート' => '5672'、 6 'ログイン' => 'ZCW'、 7 「パスワード'=>' 123456 ' 8 'バーチャルホスト'=>' /' 9。 ); 10 $ e_name =' EXCHANGE1 '; //は、スイッチ名 11。 // $のq_name =' QUEUE1「; //キュー名なしの 12である $ k_route = 'route1の';// ルート設定キー 13 14 //接続を作成し、チャンネル 15 $でCONN = 新新AMQPConnection($ conn_args ); 16 IF(!$コネチカット - > 接続()){ 17。 ダイ( "ブローカ\ N-に接続することはできません!" ); 18である } 。19 $チャンネル = 新新 AMQPChannel($コネティカット州); 20がある // オブジェクトの作成に切り替える 21は $ EX = 新新 AMQPExchange($チャンネル); 22は、 $ EX - >のsetName($ e_name ); 23はある // メッセージ送信 24 // $チャネル- > StartTransactionメソッドを(); //トランザクション開始 25 以下のために($ I ; = 0 $ iが <5; ++ $ I {) 26 $のEX - >(公開$メッセージ、$のk_routeを) "\ n" ; 27 } 28 29 // $チャネル- >のcommitTransaction(); //提交事务 30 31 $でCONN - > 切断(); 32 33?>