ホームページ  >  記事  >  バックエンド開発  >  PHP は ActiveMQ ケース分析を使用します (コード付き)

PHP は ActiveMQ ケース分析を使用します (コード付き)

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-19 10:40:311474ブラウズ

今回は、ActiveMQ を使用した PHP の事例分析 (コード付き) をお届けします。 ActiveMQ を使用した PHP の 注意事項 について、実際の事例を見てみましょう。

ポイントツーポイントモデルを使用する

ポイントツーポイントモデルの機能:

  • メッセージを受信できるコンシューマーは1人だけです

  • 繰り返し消費することはできません

プロデューサーProducer.phpコード:

<?php
try {
  // 1.建立连接
  $stomp = new Stomp(&#39;tcp://47.52.119.21:61613&#39;);
  // 2.实例化类
  $obj = new Stdclass();
  // 3.获取数据
  for($i=0; $i<3; $i++){
    $obj->username = 'test';
    $obj->password = '123456';
    $queneName   = "/queue/userReg";
    // 4.发送一个注册消息到队列
    $stomp->send($queneName, json_encode($obj));
  }
} catch (StompException $e) {
  die('Connection failed: ' . $e->getMessage());
}

Consumer 1consumer1.php コード:

<?php
$stomp = new Stomp(&#39;tcp://localhost:61613&#39;);
$stomp->subscribe('/queue/userReg');
while (true) {
  //判断是否有读取的信息
  if ($stomp->hasFrame()) {
    $frame = $stomp->readFrame();
    $data = json_decode($frame->body, true);
    var_dump($data);
    $stomp->ack($frame);
  }
}

Consumer 2consumer2.php コード:

<?php
$stomp = new Stomp(&#39;tcp://localhost:61613&#39;);
$stomp->subscribe('/queue/userReg');
while (true) {
  //判断是否有读取的信息
  if ($stomp->hasFrame()) {
    $frame = $stomp->readFrame();
    $data = json_decode($frame->body, true);
    var_dump($data);
    $stomp->ack($frame);
  }
}

実行結果は次のとおりです:

パブリッシュ/サブスクライブ (Publish Subscribe) モデルの使用

パブリッシュ/サブスクライブ モデルの機能:

複数のコンシューマがメッセージを受信可能
繰り返し消費可能
プロデューサー生産者.php code:

<?php
try {
  // 1.建立连接
  $stomp = new Stomp(&#39;tcp://47.52.119.21:61613&#39;);
  // 2.实例化类
  $obj = new Stdclass();
  // 3.获取数据
  for($i = 0; $i < 3; $i++){
    $obj->username = 'test';
    $obj->password = '123456';
    $queneName   = "/topic/userReg";
    // 4.发送一个注册消息到队列
    $stomp->send($queneName, json_encode($obj));
  }
} catch (StompException $e) {
  die('Connection failed: ' . $e->getMessage());
}

Consumer1consumer1.php code:

<?php
$stomp = new Stomp(&#39;tcp://localhost:61613&#39;);
$stomp->subscribe('/topic/userReg');
while (true) {
  //判断是否有读取的信息
  if ($stomp->hasFrame()) {
    $frame = $stomp->readFrame();
    $data = json_decode($frame->body, true);
    var_dump($data);
    $stomp->ack($frame);
  }
}

Consumer2consumer2.php code:

?php
$stomp = new Stomp('tcp://localhost:61613');
$stomp->subscribe('/topic/userReg');
while (true) {
  //判断是否有读取的信息
  if ($stomp->hasFrame()) {
    $frame = $stomp->readFrame();
    $data = json_decode($frame->body, true);
    var_dump($data);
    $stomp->ack($frame);
  }
}

実行結果は以下の通り:

Iこの記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

phpとjsでローカルexeアプリケーションを開くときにパラメータを渡す手順の詳細な説明

固定パス下の​​フォルダーとファイルを削除するphpの実装方法

以上がPHP は ActiveMQ ケース分析を使用します (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。