使用點(diǎn)對(duì)點(diǎn)(Point To Point)模型
點(diǎn)對(duì)點(diǎn)模型特點(diǎn):
- 只有一個(gè)消費(fèi)者可以接收到消息
- 不能重復(fù)消費(fèi)
生產(chǎn)者producer.php代碼:
<?php try { // 1.建立連接 $stomp = new Stomp('tcp://47.52.119.21:61613'); // 2.實(shí)例化類 $obj = new Stdclass(); // 3.獲取數(shù)據(jù) for($i=0; $i<3; $i++){ $obj->username = 'test'; $obj->password = '123456'; $queneName = "/queue/userReg"; // 4.發(fā)送一個(gè)注冊(cè)消息到隊(duì)列 $stomp->send($queneName, json_encode($obj)); } } catch (StompException $e) { die('Connection failed: ' . $e->getMessage()); }
消費(fèi)者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); } }
消費(fèi)者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); } }
執(zhí)行結(jié)果圖如下:
使用發(fā)布/訂閱(Publish Subscribe)模型
發(fā)布/訂閱模型特點(diǎn):
多個(gè)消費(fèi)者都可以收到消息
能重復(fù)消費(fèi)
生產(chǎn)者producer.php代碼:
<?php try { // 1.建立連接 $stomp = new Stomp('tcp://47.52.119.21:61613'); // 2.實(shí)例化類 $obj = new Stdclass(); // 3.獲取數(shù)據(jù) for($i = 0; $i < 3; $i++){ $obj->username = 'test'; $obj->password = '123456'; $queneName = "/topic/userReg"; // 4.發(fā)送一個(gè)注冊(cè)消息到隊(duì)列 $stomp->send($queneName, json_encode($obj)); } } catch (StompException $e) { die('Connection failed: ' . $e->getMessage()); }
消費(fèi)者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); } }
消費(fèi)者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); } }
執(zhí)行結(jié)果圖如下:
【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。