php ActiveMQ的發送訊息,與處理訊息

來源:互聯網
上載者:User

標籤:highlight   類比   判斷   示範   ret   重要   alt   訊息佇列   images   

我們以一個簡單的使用者註冊為例,當使用者點擊註冊按鈕後,我們發送一個訊息,後台php接收到該訊息然後處理。

1.php代碼如下:

<?php$stomp = new Stomp(‘tcp://192.168.1.222:61613‘);$obj = new Stdclass();//下面這些資料,實際中是使用者通過前端頁面post來的,這裡只做示範$obj->username = ‘test‘;$obj->password = ‘123456‘;//發送一個註冊訊息到隊列,我們這裡類比使用者註冊$stomp->send(‘/queue/userReg‘, json_encode($obj));

2.php代碼如下:

<?php$stomp = new Stomp(‘tcp://192.168.1.222:61613‘);//訂閱只對一個有效,如果啟動多個指令碼,只有一個會接收到訊息$stomp->subscribe(‘/queue/userReg‘);while(true) {    //判斷是否有讀取的資訊    if($stomp->hasFrame()) {        $frame = $stomp->readFrame();        $data = json_decode($frame->body, true);        var_dump($data);        //我們通過擷取的資料        //處理相應的邏輯,比如存入資料庫,發送驗證碼等一系列操作。        //$db->query("insert into user values(‘{$username}‘,‘{$password}‘)");        //sendVerify();        //表示訊息被處理掉了,ack()函數很重要        $stomp->ack($frame);    }    sleep(1);}

分別運行上面兩個指令檔

> /data/php56/bin/php 1.php> /data/php56/bin/php 2.php

我們還可以把上面的2.php代碼分成多步執行。

2.php代碼如下:

<?php$stomp = new Stomp(‘tcp://192.168.1.222:61613‘);$stomp->subscribe(‘/queue/userReg‘);while(true) {    //判斷是否有讀取的資訊    if($stomp->hasFrame()) {        $frame = $stomp->readFrame();        $data = json_decode($frame->body, true);        //註冊資訊入庫        //$ret = db->query("insert into user values(‘{$data[‘username‘]}‘, ‘{$data[‘password‘]}‘)");        //這裡示範直接設成true了        $ret = true;        if($ret) {            echo $data[‘username‘], ‘入庫成功‘, PHP_EOL;            //如果入庫成功,再次把資料發送到另一個訊息佇列中,進行下一步處理            $stomp->send(‘/queue/sendVerify‘, $frame->body);            $stomp->ack($frame);        }    }    sleep(1);}

3.php代碼如下:

<?php$stomp = new Stomp(‘tcp://192.168.1.222:61613‘);$stomp->subscribe(‘/queue/sendVerify‘);while(true) {    //判斷是否有讀取的資訊    if($stomp->hasFrame()) {        $frame = $stomp->readFrame();        $data = json_decode($frame->body, true);        //$ret = sendVerify()發送驗證碼,實際中應該是請求某介面        $ret = true;        if($ret) {            echo $data[‘username‘], ‘發送驗證碼成功‘, PHP_EOL;            $stomp->ack($frame);        }    }    sleep(1);}

再次分別運行上面的三個指令碼

> /data/php56/bin/php 1.php> /data/php56/bin/php 2.php> /data/php56/bin/php 3.php

php ActiveMQ的發送訊息,與處理訊息

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.