<?php
/**
* Created by PhpStorm.
* User: 豆腐居士
* Date: 2018/5/30
* Time: 上午11:01
*/ class AqiTask extends BaseTask
{
const EX_NAME = 'aqi_fanout';
function clientAction()
{
$conn = new AMQPConnection([
'host' => '0.0.0.0',
'port' => 5672,
'login' => 'wangwang',
'password' => '123456'
]);
if (!$conn->connect()) {
exit('fail');
}
$channel = new AMQPChannel($conn);
$ex = new AMQPExchange($channel);
$ex->setName(self::EX_NAME);
$ex->setType(AMQP_EX_TYPE_FANOUT); //direct类型
$ex->setFlags(AMQP_DURABLE); //持久化
$ex->declareExchange();
for ($i = 0; $i < 10; $i++) {
$msg = 'hello fanout:' . $i;
echo $msg . PHP_EOL;
$ex->publish($msg);
}
$conn->disconnect();
} function server1Action()
{
$conn = new AMQPConnection([
'host' => '0.0.0.0',
'port' => 5672,
'login' => 'wangwang',
'password' => '123456'
]);
if (!$conn->connect()) {
exit('fail');
}
$channel = new AMQPChannel($conn);
$ex = new AMQPExchange($channel);
$ex->setName(self::EX_NAME);
$ex->setType(AMQP_EX_TYPE_FANOUT); //fanout类型
$ex->setFlags(AMQP_DURABLE); //持久化
$ex->declareExchange(); $queue = new AMQPQueue($channel);
$queue->setName('q1');
$queue->setFlags(AMQP_DURABLE);
$queue->declareQueue();
$queue->bind($ex->getName());try {
$queue->consume(function ($envelope, $q) {
echo 'server1:' . $envelope->getBody(), PHP_EOL;
$q->ack($envelope->getDeliveryTag()); //这里是手动应答 如果使用默认的自动应答,进程退出后消息会丢失
});
} catch (\Exception $e) {
echo $e->getMessage();
}
} function server2Action()
{
$conn = new AMQPConnection([
'host' => '0.0.0.0',
'port' => 5672,
'login' => 'wangwang',
'password' => '123456'
]);
if (!$conn->connect()) {
exit('fail');
} $channel = new AMQPChannel($conn);
$ex = new AMQPExchange($channel);
$ex->setName(self::EX_NAME);
$ex->setType(AMQP_EX_TYPE_FANOUT);
$ex->setFlags(AMQP_DURABLE);
$ex->declareExchange(); $queue = new AMQPQueue($channel);
$queue->setName('q2');
$queue->setFlags(AMQP_DURABLE);
$queue->declareQueue();
$queue->bind($ex->getName());$queue->consume(function ($envelope, $q) {
echo 'server2:' . $envelope->getBody(), PHP_EOL;
$q->ack($envelope->getDeliveryTag());
});
}
}

最新文章

  1. Python
  2. 简单阐述下OC中UIImage三种创建方式~~~
  3. python pip 升级每个包
  4. Jenkins构建Git manager服务器的源码
  5. ACM竞赛常用STL(二)之STL--algorithm
  6. sed和awk最佳入门教程
  7. 深入研究B树索引(一)
  8. Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
  9. Linux文件属性上
  10. intel服务器cpu命名规则
  11. 【Bootstrap简单用法】
  12. IntelliJ IDEA运行慢解决方法
  13. Maven 构建浏览器解析userAgent类
  14. js编译原理(你不知道的javascript)
  15. Vc数据库编程基础1
  16. SQL结构化查询语句
  17. Python 进制转换 二进制 八进制 十进制 十六进制
  18. Pandas plot出图
  19. create-react-app创建的项目npm run build之后静态文件找不到
  20. poj3237树链剖分边权+区间取负

热门文章

  1. Django admin模块使用search时报错:django.core.exceptions.FieldError: Related Field got invalid lookup: contains
  2. laravel5.2总结--软删除
  3. User Account Control
  4. RNNs在股票价格预测的应用
  5. 无法启动此程序,因为计算机中丢失OgreMain_d.dll。尝试重新安装该程序以解决此问题。
  6. STL学习笔记3--deque
  7. BZOJ 3876 支线剧情(有上下界的无源汇最小费用可行流)
  8. BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
  9. 洛谷P3245 [HNOI2016]大数 【莫队】
  10. imx6 PCIE使能加载ath9k无线网卡