php操作rabbitmq
1.配置交换机,队列,然后绑定
<?php
$conn_args = [
'host' => '127.0.0.1', //rabbitmq 服务器host
'port' => 5672, //rabbitmq 服务器端口
'login' => 'demo', //登录用户
'password' => '123456', //登录密码
'vhost' => 'demo' //虚拟主机
];
$config = [
'exchangeName' => 'wochacha_duiba',
'eqeueName' => 'wochacha_duiba',
'routeName' => 'duiba',
];
$e_name = $config['exchangeName'];
$q_name = $config['eqeueName'];
$k_route = $config['routeName'];
$conn = new AMQPConnection($conn_args);
$connect = $conn->connect();
if (!$connect) {
die('Cannot connect to the broker');
}
$channel = new AMQPChannel($conn);
// 创建交换机
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
$ex->setType(AMQP_EX_TYPE_DIRECT); // 设置路由规则
$ex->setFlags(AMQP_DURABLE | AMQP_AUTODELETE); // 这个要创建的交换机是否持久化
$ex->declareExchange(); // 执行创建, 不要用declare(), 已经过时了,会报错的
// 创建队列
$q = new AMQPQueue($channel);
$q->setName($q_name);
$q->setFlags(AMQP_DURABLE | AMQP_AUTODELETE); // 同上
$q->declareQueue(); // 同上
$q->bind($e_name, $k_route);
2.生产者
<?php
$conn_args = [
'host' => '127.0.0.1', //rabbitmq 服务器host
'port' => 5672, //rabbitmq 服务器端口
'login' => 'demo', //登录用户
'password' => '123456', //登录密码
'vhost' => 'demo' //虚拟主机
];
$config = [
'exchangeName' => 'wochacha_duiba',
'routeName' => 'duiba',
];
$e_name = $config['exchangeName'];
$k_route = $config['routeName'];
$conn = new AMQPConnection($conn_args);
$connect = $conn->connect();
if (!$connect) {
die('Cannot connect to the broker');
}
$channel = new AMQPChannel($conn);
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
$msg = '123';
$ex->publish($msg, $k_route);
3. 消费者
$conn_args = [
'host' => '192.168.73.128',
'port' => 5672,
'login' => 'demo',
'password' => '123456',
'vhost' => 'demo'
];
$config = [
'eqeueName' => 'wochacha_duiba',
];
$q_name = $config['eqeueName'];
$conn = new AMQPConnection($conn_args);
if (!$conn->connect()) {
die('Cannot connect to the broker');
}
$channel = new AMQPChannel($conn);
$q = new AMQPQueue($channel);
$q->setName($q_name);
$arr = $q->get();
if (!$arr) return;
$ack = $arr->getDeliveryTag();
$res = $q->ack($ack);
$msg = $arr->getBody();
echo $msg . "\n";
return 'ok';
note: 一般是这样操作的,运维把$conn_args配好,运行一次脚本1, 然后生产中执行脚本2,3来生产和消费。
php操作rabbitmq的更多相关文章
- Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Python操作RabbitMQ
RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- python - 操作RabbitMQ
python - 操作RabbitMQ 介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...
- 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ
本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...
- Python之路第十二天,高级(4)-Python操作rabbitMQ
rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...
- python操作---RabbitMQ
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...
- Python 之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
一.Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负债.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...
- 一个C#操作RabbitMQ的完整例子
一.下载RabbitMQ http://www.rabbitmq.com/install-windows.html 二.下载OTP http://www.erlang.org/downloads 三. ...
随机推荐
- mysql用户管理(新增用户及权限管理)
一.登录: # mysql –u root –p 回车输入密码 退出: #exit; 二.修改密码: 格式:mysqladmin –u 用户名 –p旧密码 password 新密码 # ...
- python tkinter组件学习
http://blog.csdn.net/pfm685757/article/details/50162567
- Linux 函数库
概述 函数库其实就是函数,只不过是系统所调用的函数.这样说吧,我写了一个软件,所有的功能都需要我自己完成吗?其实是不需要的,因为很多功能是别人已经写好的,我只需要拿来用就好了.这些有独立功能并且可以被 ...
- Oracle 9i Unix Manager
在Unix上被迫终止ORACLE进程时,必须做以下事情: (1) 杀掉所有Oracle进程. ps -ef|grep $ORACLE_SID|grep -v grep|awk '{print $ ...
- Python 元组Tuple概念和操作
# 元组概念:有序的不可变的元素集合 # 和列表的区别就是, 元组元素不能修改 # 定义 # 一个元素的写法 # (666,) t = (666,) #正确写法 t = (666) #错误写法,括号当 ...
- yum 源配置
在 /etc/yum.repos.d 下建立一个 .repo 文件 vim yum.repo [cd] name=cd baseurl=file:///run/media/root/RHEL-7.0 ...
- centos7下安装jdk7
CentOS7.1 JDK安装 1.卸载自带OPENJDK 用 java -version 命令查看当前jdk版本信息 #java -version 用rpm -qa | grep ...
- 机器学习-chapter1机器学习的生态系统
1.机器学习工作流程 获取->检查探索->清理准备->建模->评估->部署 2.搭建机器学习环境 1..通过安装Python,配置相关环境变量 2.强烈建议直接安装ana ...
- svn working copy locked的解决方法
在使用svn更新或提交代码时,会报"svn working copy XXX locked"的错误,利用svn客户端工具TortoiseSVN的cleanup也不能解决问题. 我们 ...
- Mfc 建立窗口线程
之前一直都是在学习C,但是没用MFC写过东西.所以这个算是MFC的一个处女作把. 今天硬着头皮写了个爆破工具,但是界面(edit控制)在显示的时候一下就被卡住了. 于是到处问人,后来有个不错的朋友帮我 ...