PHP 消息中间件ActiveMQ安装应用

本文详细介绍了ActiveMQ的两种安装方式,包括普通安装与Docker安装,并提供了配置后台及生产者账号密码的方法。此外,还深入讲解了如何使用PHP操作ActiveMQ,包括Stomp拓展的安装、代码示例及react/stomp组件的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActiveMQ 5.*官方文档(~ ̄▽ ̄)~

第一章 ActiveMQ安装


1.1 普通安装

# 需要jdk支持
yum install java-1.7.0-openjdk-devel # yum源安装了,查找文件稍微麻烦
# 安装启动Active MQ
wget https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz
tar -zxvf apache-activemq-5.15.3-bin.tar.gz
cd apache-activemq-5.14.0/bin/
./activemq start
# 检验结果
netstat -anp | grep 61
# 结果
tcp  0    0 0.0.0.0:61613    0.0.0.0:*    LISTEN  21378/java # 队列服务端
tcp  0    0 0.0.0.0:61614    0.0.0.0:*    LISTEN  21378/java
tcp  0    0 0.0.0.0:61616    0.0.0.0:*    LISTEN  21378/java
tcp  0    0 0.0.0.0:8161     0.0.0.0:*    LISTEN  21378/java # 队列客户端

1.2 docker安装

# 查询所有匹配镜像
docker search activemq
# 查看结果然后挑一个stars最多的拉取
docker pull webcenter/activemq
# 查看下载下来的镜像
docker images 
# 运行activemq容器
docker run -d --name activemq -p 61617:61616 -p 8162:8161 webcenter/activemq:latest
# 然后呢访问本机8162端口查看MQ的web控制台

第二章 ActiveMQ 后台、生产者账号密码配置


大佬地址:https://www.cnblogs.com/chxwkx/p/11149469.html

  1. 修改conf/activemq.xml
    在标签下,找到标签。在这个标签后面添加
    broker标签内加上这个配置生产者账号密码才会生效,否则无限制,连接即能操作

    # broker标签内加上这个配置生产者账号密码才会生效,否则无限制,连接即能操作
    <plugins>
    	<simpleAuthenticationPlugin>
     		<users>
    			<authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>
    		</users>
    	</simpleAuthenticationPlugin>
    </plugins>
    
    ./activemq console # 打印出启动的每一步信息,配置出错时可以用这个排错
    
  2. 生产者账号密码——修改conf/credentials.properties

    activemq.username=<用户名>
    activemq.password=<密码>
    guest.password=password
    
  3. 后台账号密码——修改conf/jetty-realm.properties
    在user下添加用户名密码信息。如test:test1,admin
    格式为 用户名:密码,角色。
    然后就可以把admin那一行删掉了,开启activemq即可。

第三章 PHP操作activeMQ


3.1 PHP 拓展Stomp安装

wget http://pecl.php.net/get/stomp-1.0.9.tgz
tar xf stomp-1.0.9.tgz
cd stomp-1.0.9
/usr/local/php-fpm/bin/phpize
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install

配置php.ini文件

# 查找php加载php.ini路径
/usr/local/php-fpm/bin/php --ini
vi /usr/local/php-fpm/etc/php.ini
# 末尾添加
extension_dir = "/usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/"
extension=stomp.so

然后你就可以写代码操控MQ了

3.2 写代码操控MQ

<?php
# 连接
try {
    //61613默认的端口,在ActiveMQ目录conf/activemq.xml文件可查看
    $stomp = new Stomp('tcp://39.105.143.144:61613', 'lalala', 'lalala');
} catch (StompException $e) {
    die('error: ' . $e->getMessage());
}

# 订阅一个消息队列, 
# prefetchSize 一个消费者一次取3条数据,逐一消费,如果此数值过大会导致多消费者时,只有一个忙,其他特别闲
$stomp->subscribe('/queue/email',  array('activemq.prefetchSize' => 3);
# 向队列添加消息
$userId = 1000;
try{
    $result = $stomp->send('email',json_encode($userId)); //比如发邮件
}catch (StompException $e) {
    die('error'.$e->getMessgae());
}

# 读取队列
while (1){
  $frame = $stomp->readFrame();
  //输出消息体内容
  $info = $frame->body;
  $queue_name = $frame->headers['destination']; # 队列名称
  $message_id = $frame->headers['message-id'];  # 队列id
  $stomp->ack($frame); // 确认消费 此消息不会被重复消费
  if (do()) { 
  	$stomp->nack($frame); // 若处理失败。将消息重新放回队列
  }
}

function do(){
	something....
	return true/false;
}

要想消费者并行消费,开启多进程吧

3.3 react/stomp 组件应用

react/stomp文档 The PHP Package Repository (~ ̄▽ ̄)~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值