PHP-AMQPバージョン2

API RabbitMQ AMQP for PHPに関する新しいアイデアで 、PHP-AMQP APIのスケッチが公開されました

以前に発行されたアイデアの続きで、最初のバージョンよりも多くのOOPである実装を紹介します。

拡張コードはここにあります。プロジェクトとsvnの説明は古いバージョン(1.0)は英語に翻訳されています

バージョン2.0の簡単な説明:

クラスAMQPConnection-チャネル接続を含む論理接続を開きます。


コンストラクター:

APMQConection :: APMQConection([配列パラメーター])

パラメーター(すべてオプション):

例外は、論理的または物理的な接続がないことです。

例:
$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1', 'vhost'=>'v1' ) );

AMQPExchange Exchangeクラス


コンストラクター:

名前が指定されている場合は交換の作成、そうでない場合はクラスの初期化
AMQPExchange :: AMQPExchange(APMQConection cnn、ストリング[名前])
name-取引所の名前

例:

$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$exchange = new AMQPExchange($cnn, 'ex_name');


Exchange広告:

proto bool AMQPEexchange :: declare([string name]、[string type = direct]、[bit params]);

name-取引所の名前
タイプ-交換タイプ、許可されるタイプ:直接、トピック、ファンアウト
params-パラメーター:

操作の結果を返します

例:
$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$exchange = new AMQPExchange($cnn);
$exchange->declare('ex_name', 'topic',AMQP_DURABLE );


交換を削除:

proto bool AMQPExchange :: delete([string name]、[bit params]);

name-取引所の名前
params-パラメーター:

操作の結果を返します

例:
$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$exchange = new AMQPExchange($cnn, 'ex_name');
$res = $exchange->delete();
// - , .


交換のキューイング:

proto bool AMQPExchange :: bind(string queueName、string routingKey);

queueName-キュー名
key-ルーティングキー、ルートキー、文字列

操作の結果を返します

例:
$msg = " , ...";
$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$exchange = new AMQPExchange($cnn, 'ex_name');
$exchange->bind('mylogin','spb.news')
$res = $exchange->publish( $msg, 'spb.news');


出版物:


proto bool AMQPExchange :: publish(string msg、[string key]、bit [parms]);

交換トピックまたはダイレクトのタイプのキーキーを使用したメッセージの発行

msg-メッセージ、文字列
key-ルーティングキー、ルートキー、文字列
params-パラメーター:


操作の結果を返します

例:
$msg = " ...";
$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$exchange = new AMQPExchange($cnn, 'ex_name');
$res = $exchange->publish( $msg, 'spb.news');


AMQPQueueキュークラス


コンストラクター-クラスの初期化

AMQPQueue :: AMQPQueue(AMQPConnection cnn、文字列[名前])

name-キュー名

キューアナウンスメント

proto int AMQPQueue :: declare(string [name]、bit [params])

name-キュー名
params-パラメーター:

キューが既に存在する場合、キュー内の要素の数を返します。

例: $cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$queue = new AMQPQueue($cnn,'chat_12');
$queue->declare('chat_12', AMQP_AUTEDELETE | AMQP_DURABLE);
$cnn = new APMQConection(array ('port'=>5673, 'login' => 'sector1' ));
$queue = new AMQPQueue($cnn,'chat_12');
$queue->declare('chat_12', AMQP_AUTEDELETE | AMQP_DURABLE);


キューを削除

proto bool AMQPQueue ::削除(文字列[名前]、ビット[パラメーター])

name-キュー名
params-パラメーター:

操作の結果を返します

例: $queue = new AMQPQueue(new APMQConection(),'chat_12');
$queue->delete();
$queue = new AMQPQueue(new APMQConection(),'chat_12');
$queue->delete();


キューを取引所にリンクする

proto bool AMQPQueue :: bind(string exchangeName、string routingKey);

name-取引所の名前
routingkey-ルートキー

例:
// 'mylogin' 'ex_estate' '*.spb'
$queue = new AMQPQueue(APMQConection(), 'mylogin');
$queue->declare();
$queue->bind('ex_estate','*.spb');


購読する

プロトタイプ配列AMQPQueue :: consumer(int n);
キューからnメッセージの配列を取得します(他のすべては破棄されます)
n-受信したメッセージの数
params-パラメーター:


注意!
受信したメッセージの数はキュー内のメッセージの総数を超えることはできません。そうしないと、APIはブローカーからのすべてのメッセージを受信するまで待機します。
現在キューにあるメッセージの数よりも少ないメッセージ数を指定すると、選択されていないすべてのメッセージが選択済みとしてマークされます。つまり、AMQP_NOACKフラグが設定されていない場合、キューから再読み取りするとメッセージは失われます。

例: $i=0;
$queue = new AMQPQueue(APMQConection());
$n = $queue->declare('mylogin');
$queueMessages = $queue->consume( $n );
foreach($queueMessages as $item){
$i++;
echo "$i.$item";
}
$i=0;
$queue = new AMQPQueue(APMQConection());
$n = $queue->declare('mylogin');
$queueMessages = $queue->consume( $n );
foreach($queueMessages as $item){
$i++;
echo "$i.$item";
}


登録解除

proto bool AMQPQueue :: unbind(string exchangeName、string routingKey);
routingKeyルートキーのcheating exchangeNameから現在のキューをデタッチします

name-取引所の名前
routingkey-ルートキー

操作の結果を返します

キューのリセット

proto bool AMQPQueue ::パージ(文字列[名前])
キュー内のすべてのメッセージは破棄され、キュー自体は残ります。

name-キュー名
操作の結果を返します

例: $queue = new AMQPQueue(new APMQConection());
$queue->purge('chat_12');
$queue = new AMQPQueue(new APMQConection());
$queue->purge('chat_12');


キュー項目を取得

プロトタイプ配列AMQPQueue :: get(string [name]、bit [params])

name-キュー名
params-パラメーター:


連想配列を返します。

Source: https://habr.com/ru/post/J73671/


All Articles