HelloWorld

前言


这里我们弱化broker内部构造。将整体分为三部分。

P:producer。生产者。

C:Consumer。消费者。

queue:队列。

后面的代码都依赖于 the php-amqplibAPI

composer安装php-amqplib


1. 新建composer.json

{
"require": {
"php-amqplib/php-amqplib": ">=2.6.1"
}
}

2. composer.phar install

Hello World


talk is cheap , show you the code

sender.php

require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage; $connection = new AMQPStreamConnection('127.0.0.1', 5672, 'guest', 'guest');
$channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); $data = implode(" ", array_slice($argv, 1));
empty($data) && $data = "Hello World!"; $msg = new AMQPMessage($data); $channel->basic_publish($msg, '', 'hello'); echo " [x] Sent '$data'\n"; //close the channel and connection;
$channel->close();
$connection->close();

receive.php

require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection; $connection = new AMQPStreamConnection('127.0.0.1', 5672, 'guest', 'guest');
$channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n"; $callback = function($msg) {
echo "[x] Received ", $msg->body, "\n";
sleep(substr_count($msg->body, '.'));
echo "[x] Done\n";
};
$channel->basic_consume('hello', '', false, true, false, false, $callback); while(count($channel->callbacks)) {
$channel->wait();
}

执行

打开两个终端,分别执行两个脚本。

终端一:

终端二:

终端一收到终端二发送的消息。

最新文章

  1. WCF服务编程
  2. 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定
  3. (转)MFC的一些宏的整理 (DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE)
  4. CI 目录下放置index.html,防止直接访问
  5. 读取XML文件的几种方式的效率分析
  6. ADO知识的运用二(Day 28)
  7. Java常见问题3:周期之谜
  8. spring调用mongodb
  9. C#版 - Leetcode 414. Third Maximum Number题解
  10. OO_多项式求导_单元总结
  11. 9.17-9.19h5日记
  12. APR Recipe
  13. 关于openssl的编译与使用
  14. 人工智能时代,应立即学习python
  15. 深入浅出Docker(五):基于Fig搭建开发环境
  16. 动态规划-Stock Problem
  17. GIT checkout 和 reset 区别
  18. 【LOJ】#2007. 「SCOI2015」国旗计划
  19. 洛谷P3926 SAC E#1 - 一道不可做题 Jelly【模拟/细节】
  20. Lync二次开发关于Lync启动退出问题

热门文章

  1. Java中的class为什么要设置访问控制?和C++比较的感悟
  2. siebel简介
  3. 关于SharePoint 2016
  4. mysql oracle计算两点之间的距离
  5. jmeter 读取mysql数据库
  6. 关于新建XIB去关联控制器,报错- the view outlet was not set
  7. Cloudstack4.2之改变数据卷容量的大小(Resize Data Volumes)
  8. PythonScripter2.7报错ascii codec can't encode characters in position 0-1:ordinal not in range(128)
  9. windows下怎么安装protobuf for python
  10. swiper 下拉刷新混乱