rabbitmq学习:

消息队列(消息中间件)常见的有三种:RabbitMQ、ActiveMQ、ZeroMQ

这里要说的是RabbitMQ。

需要明确的几个概念:

Broker: 翻译为中文应该是“经纪人”、“中间人”吧,就是指RbbitMQ服务本身

vhost: 虚拟主机,做权限控制用的,每个包含一组exchanges, queues,bindings

Exchange: “交换机”,可以理解为有路由表(binding)的路由程序,而每个消息都有一个routing key的属性,嗯,和路由原理很相像。

Queue:  消息的终点,消息到达这里后,等待着被消费者取走

Binding: 就是路由规则

Routing Key: 相当于ip地址

producer:  嗯

consumer: 嗯

channel:  --这个不是很明白呀,通信流?会话?

 

python可以使用的库有py-amqplib, txAMQP, pika,我跟着tutorial学了pika

 

首先,需要与RabbitMQ server建立连接,并在连接中建立channel

import pika
connection = pika.BlokingConnection(pika.ConnectionParameters('localhost', 5672))
channel = connection.channel()

第二步,需要确认接收队列存在,若将消息发给一个不存在的队列,RabbitMQ会丢弃这个消息。我们来创建一个叫做hello的队列吧:

channel.queue_declare(queue='hello')

第三步, 这时已经可以发送消息了,消息必然要经过exchange才能到达queue,关于exchange,附录的文章中有比较好的说明。这里只需选择默认exchange。

channel.basic_publish(exchange='',routing_key='hello',body='Hello Word!')

结束程序前,需要确认network buffers 已经被刷新,关闭连接即可。

connection.close()

-----------------------------------------------------------------------

Listing queues

You may wish to see what queues RabbitMQ has and how many messages are in them. You can do it (as a privileged user) using the rabbitmqctl tool:

$ sudo rabbitmqctl list_queues
Listing queues ...
hello    0
...done.

(omit sudo on Windows)

------------------------------------------------------------------------

 

==============================================================

 

该consumer端到队列里面去消息了,同样的,建立连接和channel,嗯代码同前。在开始之前,首先确认下队列已经存在,跟producer端一样的,因为不知道是哪边程序先启动,这样做很保险。

channel.queue_declare(queue='hello')

接收端得到一个消息,会调用用户定义的回调函数,那么我们先定义一个回调函数吧。

简单点的,打印消息

def callback(ch, method, properties, body):print “ Received %r" % (body,)

然后告诉RabbitMQ我定义的这个回调函数应该处理hello队列中的消息(这要求此队列必须存在,我们之前用queue_declare确认过了):

channel.basic_consume(callback,queue='hello',no_ack=True)

好了,进入等待状态吧,有消息过来了,就会调用之前定义好的回调函数了:

channel.start_consuming()

 

 

资源链接:

官网tutorial:    http://www.rabbitmq.com/tutorials/tutorial-one-python.html

[翻译] [RabbitMQ+Python入门经典] 兔子和兔子窝:http://blog.ftofficer.com/2010/03/translation-rabbitmq-python-rabbits-and-warrens/

原文: https://bmark.us/bmark/readable/6067c44d09ee21

消息队列RabbitMQ入门介绍  http://www.nsbeta.info/archives/200

转载于:https://www.cnblogs.com/tothegump/p/3195421.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁盘与目录的容量(转)

磁盘与目录的容量 现在我们知道磁盘的整体数据是在 superblock 区块中,但是每个各别文件的容量则在 inode 当中记载的。 那在文字接口底下该如何叫出这几个数据呢?底下就让我们来谈一谈这两个命令: df:列出文件系统的整体磁盘使用…

酸了!第一名+第三名的学霸情侣,分别直博清华、人大…

全世界只有3.14 % 的人关注了爆炸吧知识本文授权转载自公众号:学术志(ID:xueshuzhi001)作者:青小小(ID:zqwqxx)综合自武汉大学在武汉大学数学与统计学院2017级数学基地班第一名和第三…

UVA10972 - RevolC FaeLoN(双连通分量)

题目链接 题意: 给定一个无向图,问最少加入多少条边,使得这个图成为连通图 思路:首先注意题目给出的无向图可能是非连通的,即存在孤立点。处理孤立点之后。其它就能够当作连通块来处理。事实上跟POJ3352非常像&#xf…

php返回一个变量,PHP从另一个文件获取变量

有许多不同的方法可以做到这个,我会和你分享2。INCLUDE可以在事实上include()它使用第三文件,但我不建议作为会议是容易得多。但是,如果你想要一个配置类型文件,这也很有用。顶部的login.php的:include(global.php);新…

如何解决Android studio已分享到github的项目但是git->commit directory提交不上去

今天在android studio里面分享了一个项目到github,打算开发一个Android各种框架,控件,或者特效的对比应用和分析,然后对相关功能进行扩展,如果感兴趣的小伙伴想把Android里面相关框架,控件,特效什么进行对比应用和总结并扩展,那么请猛戳这里吧,https://github.com/chan…

分析cocos2d-x中的CrystalCraze示例游戏

cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是cocos2d-x开发游戏的主流模式,优点是: 游戏逻辑用javascript&#xff…

WPF 实现一个酷酷的Loading

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织由于微信群人数太多入群请添加小编微信号(yanjinhuawechat)或(W_Feng_aiQ)邀请入群(需备注WPF开发者)PS:有更好的…

DNS区域委派与转发

DNS区域委派与转发 DNS 是域名系统 (Domain Name System) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间…

惊了!哆啦A梦里最能打的道具,居然真实存在!还打破了世界纪录,看完跪了....

全世界只有3.14 % 的人关注了爆炸吧知识生活处处有科学《哆啦A梦》里的空气炮,是很多人童年时梦寐以求的神奇道具。只要将手伸进炮筒,就能发出强大的压缩空气炮,瞬间击倒体型庞大的怪物。为了证明“空气炮”的确有科学依据,有这么…

看科普片随感

很多专业知识的科普片为什么能够让没有专业知识背景的人也能够看懂、并且印象深刻? 粗略总结以下4点。 1、图、文、动画并茂。 2、讲故事、“平民化“。 3、用生活中的场景映衬一些专业知识。 4、把复杂的东西简单化。 如果我们传播一些专业知识的时候也能做到这样&…

service zookeeper does not support chkconfig解决办法

一 问题描述部署好ZooKeeper后,需要设置启动脚本并设置开机自动启动。cp /opt/app/zookeeper/bin/zkServer.sh /etc/init.d/zookeeper更改脚本的参数ZOOBIN/opt/app/zookeeper/binZOOBINDIR/opt/app/zookeeper/binZOO_LOG_DIR/opt/logs/zookeeper这个三个参数随意自…

Android之如何解决Android Studio左边的的project不见了

今早上一打开Android studio,尼玛,我的project跑哪里去了,郁闷了,如下图 本来是要去问我师傅的,但是一想这么简单的问题也去问,弱爆了,如果在网上找不到解决问题的办法再去问吧,果然找到了&…

Win11推送加速!

微软宣布 Windows 11 现已开始向更多符合条件的 Windows 10 电脑推送。微软表示:无论是推广经验还是用户反馈,都是积极的。因此我们计划扩大 Windows 11 的推送范围,这比我们之前预期的要快。如果您有符合升级条件的 Windows 10 电脑&#xf…

h5通过php微信支付宝支付,用H5调用支付微信公众号支付的解析

这篇文章主要为大家详细介绍了微信公众号支付H5调用支付,具有一定的参考价值,感兴趣的小伙伴们可以参考一下最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个dem…

菜鸟小编对云计算的一点猜想

尊敬的51cto会员,大家好,我是【文德数据】的90小编小宇: 刚刚浏览了好长时间的云计算资料,对它有所了解,不知道大家有没有发现其实云计算只是一种假想的东西。 猜测1.IDC和云计算关系密切。 首先&#xff0…

这场戏里,到底是谁脏了?

1 让我表演个背包袱!▼2 猝不及防的劈叉(素材来源网络,侵删)▼3 就很出戏(素材来源网络,侵删)▼4 意识流拔河很有感觉了▼5 纯爱(素材来源网络,侵删)▼6 …

Android之如何解决刚下载的Android studio(包括上面的菜单栏)乱码问题

这个问题是我的台式机第一次下载Andorid studio的时候出现的,这台台式机组装的,是之前玩ps的人用了的,感觉怪怪的,第一次安装Android studio不是很熟悉,出现了乱码,包括菜单栏目,只有部分图片了,没有全部图片了 解决这个问题的总共思路: 思路一: 请教了那…

关于高级导数的一个不等式估计

from: http://math.fudan.edu.cn/gdsx/XXYD.HTM

sqlserver2008 创建支持文件流的数据库

第一步打开sqlserver数据库filestream特性How to: Enable FILESTREAM(12个步骤)Before you can start to use FILESTREAM, you must enable FILESTREAM on the instance of the SQL Server Database Engine. This topic describes how to enable FILESTR…

php xmlhttprequest,DOM XMLHttpRequest

DOM XMLHttpRequest通过 XMLHttpRequest 对象,您可以在不重新加载整个页面的情况下更新网页中的某个部分。XMLHttpRequest 对象XMLHttpRequest 对象用于幕后与服务器交换数据。XMLHttpRequest 对象是开发者的梦想,因为您可以:在不重新加载页面…