首页 > 语言 > PHP > 正文

PHP使用ActiveMQ实例

2024-05-05 00:02:13
字体:
来源:转载
供稿:网友

使用点对点(Point To Point)模型

点对点模型特点:

  • 只有一个消费者可以接收到消息
  • 不能重复消费

生产者producer.php代码:

<?phptry {  // 1.建立连接  $stomp = new Stomp('tcp://47.52.119.21:61613');  // 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());}

消费者1consumer1.php代码:

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

消费者2consumer2.php代码:

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

执行结果图如下:

PHP,ActiveMQ

使用发布/订阅(Publish Subscribe)模型

发布/订阅模型特点:

多个消费者都可以收到消息
能重复消费
生产者producer.php代码:

<?phptry {  // 1.建立连接  $stomp = new Stomp('tcp://47.52.119.21:61613');  // 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());}

消费者1consumer1.php代码:

<?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);  }}

消费者2consumer2.php代码:

?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);  }}

执行结果图如下:

PHP,ActiveMQ

 

注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选