php使用activemq

一、下载:

http://activemq.apache.org/activemq-5140-release.html

二、安装

tar -zxvf apache-activemq-5.15.3-bin.tar.gz
cd apache-activemq-5.14.0
cd bin
./activemq start

三、防火墙端口

<
8161(web管理页面端口)
61616(activemq服务监控端口)

四、web管理页面

默用户名密码 admin/admin 
 
image.png

五 使用

使用stomp-php

<?php
require __DIR__ . '/../vendor/autoload.php';


// 引入库
use FuseSource\Stomp\Stomp;

// 创建连接
$con = new Stomp("tcp://localhost:61613");

// 连接
$con->connect();
//发送消息到队列
$con->send("/queue/test", "test");
$con->send("/queue/test", "test", array('persistent' => 'true'));//支持持久化

echo "Sent message with body 'test'\n";
// 订阅队列
$con->subscribe("/queue/test");
// 从队列中接收消息
$msg = $con->readFrame();

// 执行自定义任务
if ($msg != null) {
    echo "Received message with body '$msg->body'\n";
    // 将消息标记为在队列中收到
    $con->ack($msg);
} else {
    echo "Failed to receive a message\n";
}


// 关闭连接
$con->disconnect();
?>

使用扩展Stomp

<?php
    $queue  = 'msg_notify';
    $msg    = json_encode(array(
        'uid'=>100,
        'email'=>'xxx@baidu.com',
        'address'=>'beijing',
    ),JSON_UNESCAPED_UNICODE);

    /* 连接 */
    try {
        $stomp = new Stomp('tcp://localhost:61613');
    } catch(StompException $e) {
        die('Connection failed: ' . $e->getMessage());
    }

    /* 向队列“Foo”发送消息*/
    $stomp->send($queue, $msg,array('persistent'=> true));

    /* 订阅来自“Foo”队列的消息 */
    $stomp->subscribe($queue);

    /* 读取数据 */
    $frame = $stomp->readFrame();

    if ($frame->body === $msg) {
        var_dump($frame->body);
        /* 确认接收到*/
        $stomp->ack($frame);
    }

    /* 连接关闭 */
    unset($stomp);
posted @ 2021-03-26 23:48  setevn  阅读(349)  评论(0编辑  收藏  举报