1. 程式人生 > >訊息佇列ActiveMQ初步

訊息佇列ActiveMQ初步

安裝ActiveMQ

官網地址:http://activemq.apache.org/

解壓後基本目錄結構:

  • bin存放的是指令碼檔案
  • conf存放的是基本配置檔案
  • data存放的是日誌檔案
  • docs存放的是說明文件
  • examples存放的是簡單的例項
  • lib存放的是activemq所需jar包
  • webapps用於存放專案的目錄

進入 bin 目錄:

./activemq star # 啟動activeMQ服務
./activemq stop # 關閉activeMQ服務

ActiveMQ 預設啟動時,啟動了內建的 jetty 伺服器,提供一個用於監控 ActiveMQ 的 admin 應用(預設埠為8161,預設賬號密碼都是admin):

PHP通過STOMP協議連線ActiveMQ

STOMP 是一個簡單的可互操作的協議,被用於通過中間伺服器在客戶端之間進行非同步訊息傳遞。它定義了一種在客戶端與服務端進行訊息傳遞的文字格式。

STOMP 1.2規範:https://stomp.github.io/stomp-specification-1.2.html

PHP擴充套件——STOMP安裝

下載地址:http://pecl.php.net/package/stomp

$ wget http://pecl.php.net/get/stomp-2.0.2.tgz
$ tar zxf stomp-2.0.2.tgz
$ cd stomp
-2.0.2 $ phpize $ ./configure --enable-stomp --with-php-config=/usr/local/php/bin/php-config $ make && make install

完成後可以在結果中看見 extension 安裝路徑,在 php.ini 中新增節點:

[stomp]
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/stomp.so

驗證安裝結果:

php -m | grep Stomp

手動建立一個測試佇列

進入管理後臺,建立一個新的 Queue:test

並在該 test 佇列中傳送幾條訊息

PHP連線並獲取訊息

<?php
//61613是STOMP連線預設的埠,在ActiveMQ目錄conf/activemq.xml檔案可修改
$broker = 'tcp://ActiveMQ服務IP地址:61613';
$queue  = '/queue/test';

try {
    $stomp = new Stomp($broker);
    $stomp->subscribe($queue);

    while($stomp->hasFrame()) {
    //訂閱一個訊息佇列
        $frame = $stomp->readFrame();
    //輸出訊息體內容
        echo $frame->body.PHP_EOL;
    }
} catch(StompException $e) {
    echo $e->getMessage();
}

執行上面的程式碼: