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的更多相关文章

  1. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  2. Python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...

  3. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  4. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  5. python - 操作RabbitMQ

    python - 操作RabbitMQ     介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...

  6. 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

    本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...

  7. Python之路第十二天,高级(4)-Python操作rabbitMQ

    rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  8. python操作---RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  9. Python 之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    一.Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负债.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  10. 一个C#操作RabbitMQ的完整例子

    一.下载RabbitMQ http://www.rabbitmq.com/install-windows.html 二.下载OTP http://www.erlang.org/downloads 三. ...

随机推荐

  1. Python基础-序列化(json/pickle)

    我们把对象(变量)从内存中变成可存储的过程称之为序列化,比如XML,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等 ...

  2. TCP协议的三次握手和四次挥手机制

    核心知识点: 1.三次握手:seq和ack number 2.四次挥手:FIN和随机数 一.TCP/IP协议 TCP/IP协议(Transmission control protool/Interne ...

  3. python更新模块

    pip install -U 模块名 # 这是 python2+ 版本的用法更新模块 pip3 install -U 模块名 # 这是 python3+ 版本的用法更新模块

  4. Python 1 数据类型的操作

    一.数字(Number) 1.数学函数: 函数 返回值 ( 描述 ) abs(x) 返回数字的绝对值,如abs(-10) 返回 10 ceil(x) 返回数字的上入整数,如math.ceil(4.1) ...

  5. volume不能挂载mysql permission denied问题

    参考 把玩jenkins docker镜像遇到的volume权限问题 docker run -d -v /root/jenkins:/var/jenkins_home -u 0 -P --name j ...

  6. 42和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 设置 ...

  7. 反射,hashlib模块,正则匹配,冒泡,选择,插入排序

    一.反射(自省) 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数, ...

  8. CentOS7,将文本模式改成图形界面模式

    在以前通过vi /etc/inittab,将3修改成5.但是在centOS7之后将修改的办法换掉了,执行systemctl set-default graphical.target.根据提示进行一步一 ...

  9. HttpUtils工具类

    HttpUtils工具类 package net.hs.itn.teng.common.util; import java.io.IOException; import java.io.Unsuppo ...

  10. 逐行读取txt文件并存入到数组中

    get_file_contents_on_line.php $file = fopen("log.txt", "r"); $user=array(); $i=0 ...