2011-10-07

【系統】ActiveMQ : Producer & Consumer Code - PHP with STOMP

ActiveMQ 都架好後,就要開始寫Producer & Consumer 的程式啦。
PHP 是用 Stomp 協定,所以要先把Stomp 抓回來。

STOMP 網站的下載頁去下載。
# wget http://stomp.fusesource.org/release/php/1.0/stomp-php-1.0.0.tar.gz
# tar -zxvf stomp-php-1.0.0.tar.gz
解壓完就有 Stomp 的 library啦。
接著程式部份,只要 include STOMP 就好了。
下面是 Producer & Consumer 的程式碼。
Producer.php
<?php
    // include a library
    require_once("Stomp.php");
    // make a connection
    $con = new Stomp("tcp://localhost:61613");
    // connect
    $con->connect();
    // send a message to the queue
    for ($i=0; $i<10; $i++) {
        $msg = "test" . $i;
        $con->send("/queue/test", $msg, array('persistent' => 'true'));
        echo "Sent message with body $msg \n";
    }
    // disconnect
    $con->disconnect();
?>
Consumer.php
<?php
    // include a library
    require_once("Stomp.php");
    // make a connection
    $con = new Stomp("tcp://localhost:61613");
    // connect
    $con->connect();

    // subscribe to the queue
    $con->subscribe("/queue/test");
    
    while (1) {
        // receive a message from the queue
        $msg = $con->readFrame();
    
        // do what you want with the message
        if ( $msg != null) {
            echo "Received message with body '$msg->body'\n";
            // mark the message as received in the queue
            $con->ack($msg);
        } else {
            echo "Failed to receive a message\n";
        }
    }

    // disconnect
    $con->disconnect();
?>
PS.設定 array('persistent' => 'true') ,這樣子才會存在資料庫中。

搞定。


0 comments:

張貼留言