当前位置:Gxlcms > php框架 > PHP使用ActiveMQ实例

PHP使用ActiveMQ实例

时间:2021-07-01 10:21:17 帮助过:27人阅读

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

点对点模型特点:

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

生产者producer.php代码:

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

消费者1consumer1.php代码:

  1. <?php
  2. $stomp = new Stomp('tcp://localhost:61613');
  3. $stomp->subscribe('/queue/userReg');
  4. while (true) {
  5. //判断是否有读取的信息
  6. if ($stomp->hasFrame()) {
  7. $frame = $stomp->readFrame();
  8. $data = json_decode($frame->body, true);
  9. var_dump($data);
  10. $stomp->ack($frame);
  11. }
  12. }

消费者2consumer2.php代码:

  1. <?php
  2. $stomp = new Stomp('tcp://localhost:61613');
  3. $stomp->subscribe('/queue/userReg');
  4. while (true) {
  5. //判断是否有读取的信息
  6. if ($stomp->hasFrame()) {
  7. $frame = $stomp->readFrame();
  8. $data = json_decode($frame->body, true);
  9. var_dump($data);
  10. $stomp->ack($frame);
  11. }
  12. }

执行结果图如下:

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

发布/订阅模型特点:

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

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

消费者1consumer1.php代码:

  1. <?php
  2. $stomp = new Stomp('tcp://localhost:61613');
  3. $stomp->subscribe('/topic/userReg');
  4. while (true) {
  5. //判断是否有读取的信息
  6. if ($stomp->hasFrame()) {
  7. $frame = $stomp->readFrame();
  8. $data = json_decode($frame->body, true);
  9. var_dump($data);
  10. $stomp->ack($frame);
  11. }
  12. }

消费者2consumer2.php代码:

  1. ?php
  2. $stomp = new Stomp('tcp://localhost:61613');
  3. $stomp->subscribe('/topic/userReg');
  4. while (true) {
  5. //判断是否有读取的信息
  6. if ($stomp->hasFrame()) {
  7. $frame = $stomp->readFrame();
  8. $data = json_decode($frame->body, true);
  9. var_dump($data);
  10. $stomp->ack($frame);
  11. }
  12. }

执行结果图如下:

人气教程排行