RabbitMQ的安装与基本使用
运行环境:https://oneinstack.com/install/
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。如发送短信、邮件、过滤非法关键字等等。它还可以用于RPC。
先看一张官方图:
一、概念:
- [root@cloud bin]# erl
- Erlang R16B02 (erts-5.10.3) [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]
- Eshell V5.10.3 (abort with ^G)
- 1>
- rabbitmq-c build options:
- Host: x86_64-unknown-linux-gnu
- Version: 0.4.1
- SSL/TLS: openssl
- Tools: yes
- Documentation: no
- Examples: yes
然后进行make和安装了.
make && make install
Consumer端:
- //设置连接属性
- $connArgs = array(
- 'host' => 'localhost',
- 'port' => '5672',
- 'login' => 'guest',
- 'password' => 'guest',
- 'vhost' => '/'
- );
- //创建RabbitMQ连接
- $conn = new AMQPConnection($connArgs);
- if (!$conn->connect()) {
- echo 'cannot connect to the broker';
- }
- //创建channel
- $channel = new AMQPChannel($conn);
- //设置队列名称
- $exchangeName = 'exchange';
- $routingKey = 'key_test';
- $queueName = 'queue_test_1';
- $queue = new AMQPQueue($channel);
- $queue->setName($queueName);//设置名称
- $queue->setFlags(AMQP_DURABLE);//持久化队列,当代理重启动后依然存在,并包括它们中的完整数据
- $queue->declare();//声明此队列
- $queue->bind('exchange',$routingKey);//使用某交换机,并绑定某路由关键字
- //消费数据方式一:非阻塞方式
- // while(true)
- // {
- // sleep(1);
- // $envelope = $queue->get(AMQP_AUTOACK) ;//第一个参数表示自动ACK应答
- // if ($envelope){
- // $messages = $envelope->getBody();
- // echo $messages;
- // }
- // }
- //消费数据方式二:以阻塞模式消费数据(推荐)
- while(true)
- {
- $queue->consume('processMessage');//第一个参数表示要回调的方法名,第二个参数设置为AMQP_AUTOACK,表示自动ACK应答
- }
- /**
- * 定义回调方法
- */
- function processMessage($envelope, $queue)
- {
- $messages = $envelope->getBody();#获取消息数据
- echo $messages;
- $queue->ack($envelope->getDeliveryTag()); //处理成功后,手动发送ACK应答
- //$queue->nack($envelope->getDeliveryTag()); //处理不成功,手动发送NO-ACK应答,放回队列中
- }
八:特别说明:
所有Message。如图所示:
RabbitMQ的安装与基本使用的更多相关文章
- RabbitMQ服务安装配置
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...
- Erlang&RabbitMQ服务安装配置
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...
- rabbitMQ第一篇:rabbitMQ的安装和配置
在Windows下进行rabbitMQ的安装 第一步:软件安装 如果安装rabbitMQ首先安装基于erlang语言支持的OTP软件,然后在下载rabbitMQ软件进行安装(安装过程都是下一步,在此不 ...
- Linux下 RabbitMQ的安装与配置-3
一 Erlang安装 1.RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境. 从Erlang的官网http://www.erlang.org/download.html 下载最 ...
- 【linux环境下】RabbitMq的安装和监控插件安装
[注意安装过程中,提示某些命令not found,直接yum isntall一下就好了] 以下是我在CentOS release 6.4下亲测成功的. RabbitMq的安装: RabbitMQ是 ...
- 【windows环境下】RabbitMq的安装和监控插件安装
RabbitMq的安装: RabbitMQ是基于Erlang的,所以必须先配置Erlang环境. 下载Erlang,地址:http://www.erlang.org/download/otp_win3 ...
- gcc, numpy, rabbitmq等安装升级总结
1. 公司在下面目录安装了gcc-4.8.2,以支持c++11,可以通过在bashrc中添加来实现: PATH=/opt/compiler/gcc-4.8.2/bin:$PATH 2. 公司环境切换到 ...
- Linux下 RabbitMQ的安装与配置
以下教程摘录自互联网并做了适当修改,测试的rabbitmq 版本为:rabbitmq-server-generic-unix-3.5.6 各版本之间会有差异!!! 一 Erlang安装 Rabbit ...
- Linux rabbitmq的安装和安装amqp的php插件
RabbitMQ是一个消息代理.它的核心原理非常简单:接收和发送消息.你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处.在这个比喻中,RabbitMQ是一个邮箱.邮局.邮 ...
- RabbitMQ windows安装官方文档翻译!
RabbitMQ Windows安装和配置 下载地址 官网windows下载地址: http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/r ...
随机推荐
- 以太坊中的账户、交易、Gas和区块Gas Limit等概念
什么是账户 以太坊账户与我们所知的账户概念有一定相似之处,却又有很大的区别,更不同于比特币中UTXO. 账户分两类: - 外部拥有账户(EOA),也就是普通账户 - 合约账户 普通账户 所谓的普通账户 ...
- 《全栈性能Jmeter》-2性能测试初体验
- 9.C# 类
1.类定义格式 [访问修饰符]class 类名 [:父类名,接口名,接口名] { //类成员 } 类的访问修饰符有public.internal两个,没有标明访问修饰符默认为internal,被int ...
- (已解决)Eclipse报错:Could not find XXX.apk. 没有Android项目命名. There is no android project named
可能是你把当前项目设置为library项目了,按以下步骤切换回普通项目: 选择 Project->Properties 在左边的列表中,选择 Android 取消钩中"Is Libra ...
- whu 643 Soul Artist(二维BIT 区间更新,单点查询)
Soul Artis [题目链接]Soul Artis [题目类型]二维BIT &题解: 二维区间更新和一维相比,要容斥一下,更新一块区间就是更新4个点. 还有这个我先是写了2*n^2logn ...
- word中加入endnote
http://jingyan.baidu.com/article/f54ae2fc3926d91e92b849c2.html 1.如果安装完endnote后,word中没有出现 endnote菜单,则 ...
- Rpgmakermv(25) 游戏数据
随着对RMMV插件了解的深入,我们会发现如果我们想要对游戏数据进行一些扩展,首先要了解游戏数据,游戏数据在官方代码中的rpg_managers.js里,这一节我们将要对这个官方类有一些基础的了解,并且 ...
- [转]js刷新父窗体
浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法 <script language=JavaScript> parent.location.reload(); ...
- yii2开启事务
public function actionAdd() { $model = new Goods(); $model->setScenario('insert'); if ($model-> ...
- html5-textarea元素
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...