• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > RabbitMQ(python实现)学习之一:简单两点传输“Hello World”的实现,rabbitmqpython

RabbitMQ(python实现)学习之一:简单两点传输“Hello World”的实现,rabbitmqpython

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含RabbitMQ(python实现)学习之一:简单两点传输“Hello World”的实现,rabbitmqpython等服务器相关知识,网友希望可以进行参考

RabbitMQ(python实现)学习之一:简单两点传输“Hello World”的实现,rabbitmqpython


一.基本配置

注意 RabbitMQ支持python、Java、Ruby、PHP、C#等语言的支持,本博客主要是针对python讲解。本博客安装配置是基于ubuntu系统的。

1.1安装配置epel源

$ rpm -Uvh http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm

1.2安装erlang

$: yum -y install erlang  或者

$:sudo apt-get install erlang

1.3安装rabbitmq-server

$: yum -y install rabbitmq-server 或者

$: sudo apt-get install rabbitmq-server

1.4启动/停止rabbitmq-server

$: sudo service rabbitmq-server start

$: sudo service rabbitmq-server stop

1.5安装RabbitMQ libraries

RabbitMQ遵循AMQP协议,为了使用rabbitmq,你需要一个库来解读这个协议,对于python来说,你需要安装下面库函数中的任意一个即可:

>py-amqplib
>txAMQP
>pika

本博文以pika库为例,安装如下:

$:sudo pip install pika==0.9.8 或者
$:sudo apt-get install pika==0.9.8

注意:以下内容是在rabbitmq-server启动,运行在标准端口5672的前提下进行的。 

二.对英文版的翻译

2.1简介

RabbitMQ相当于一个消息代理,他完成接收和转发消息的功能,你可以把它想成一个邮局,起到中转作用。RabbitMQ会用到一些专业术语,如下:

>Producer:用来发送消息的程序被称为一个producer,我们用‘P’表示:

                                     

 >Queue:队列,相当于邮箱的作用,他在创建后一直存活与RabbitMQ中,虽然消息可以在你的程序之间流动,但是在这中间的过程中,消息必须存在queue中,一下queue没有大小限制,你可以存无数的消息,(前提你必须预留1GB的硬盘空间),他就相当于一个没有限制的缓存。多个Producer可以发送消息到同一个queue,多个Consumer也可以从同一个queue中接收消息。一个queue可以用下面的图表示,图的上面是queue的名字。

                             

 

>Consumer:一个用来接收消息的程序称之为Consumer,我们用下面的图表示:

                                 

注意,对于Producer和Consumer可以不在同一台host上面,后续博文会做介绍。

2.2两点传输“Hello World!”

需要两个程序,一个用来发送“Hello World!”,一个程序用来接收“Hello World!”并打印到屏幕上面。模型如下:

                        

我们创建一个名字为hello的queue。Producer发送消息到hello的queue,Consumer从名为hello的queue中接收消息。

2.3sending(发送代码实现)

模型如下:

                                

首先我们需要编写一个send.py程序,这个程序将向queue中发送一个消息,第一件事,我们要做的就是与rabbitmq-server建立连接,代码如下:

import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()

如果我们想与不同的host建立连接,只需将‘localhost’换成IP地址。

 

接下来,我们需要确定接纳消息的queue的存在,如果我们把消息发送给不存在的queue,那么rabbitmq自动将消息丢弃,让我们创建一个消息队列queue,命名为‘hello’

channel.queue_declare(queue='hello')

 

在Rabbitmq中,一个消息不能直接发送给queue,需要经过一个exchange,后续博文会讲到,现在我们只需将exchange设置为空字符串。

exchange很特别,他会识别我们的消息要发送给哪个消息队列queue,queue的名字需要用routing_key来标识,exchange通过routing_key确定消息发送至哪个消息队列queue。代码如下:

channel.basic_publish(exchange='',routing_key='hello',body='Hello World!')
print "[X] Sent 'Hello World!'"

在退出程序之前,我们需要清理缓存,并且确定我们的消息“Hello World!”真的发送给RabbitMQ了,我们可以通过关闭连接来完成,代码如下:

connection.close()

完整的send.py的代码如下:

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()

2.4Receiving(接收代码实现)

模型如下所示:

                            

我们的接收程序receive.py将接收消息,并将它打印在屏幕上。

同样首先,我们需要与rabbitmq-server建立连接,代码和send.py基本一致,代码如下:

import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel=connection.channel()

接下来,和前面一样,要确定去队列queue的存在,用queue_declare()创建队列,对于这个命令我们可以运行很多次,但只有一个名字为hello的queue存在。代码如下:

channel.queue_declare(queue='hello')

或许你会问,为什么我们要再次创建名字为hello的queue,前面我们已经建立了啊,当然,如果我们确定队列queue已经存在了,我们可以不加这段代码。例如,如果send.py程序在之前已经运行过了,但是我们不确定哪个程序时先运行的,这时候,我们在两个程序中同时声明queue就是必须的。

 

对于receive.py,我们要定义一个callback函数,在我们接受到消息的时候,pika库会调用callback函数,在我们的程序里,callback函数就是将接收到的消息打印在屏幕上。函数代码如下:

def callback(ch,method,properties,body):
    print"[x] Received %r" %(body)

 

接下来我们需要告诉Rabbitmq,这个特殊的函数callback()的功能,就是从hello的queue中接收消息,代码

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • RabbitMQ(python实现)学习之一:简单两点传输“Hello World”的实现,rabbitmqpython

相关文章

  • Spark下的PageRank实现,SparkPageRank实现
  • HDFS概述---namenode的设计详解,hdfs概述---namenode
  • 现代数学的引路人,现代数学引路人
  • hive 日志存放位置修改,hive日志存放位置
  • inet_ntoa issue,inet_ntoa
  • Elasticsearch之Nested Query,elasticsearch
  • 在Ubuntu 14.04安装和使用Docker,14.04docker
  • redis学习笔记之pipeline,redispipeline
  • request.getScheme()的使用方法,request.getscheme
  • Storm简述及集群安装,Storm简述集群安装

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Openfire Hazelcast集群详解,openfirehazelcast
    • 2015.6.5,2015.6.5世界环境日
    • hive:Access denied for user 'root'@'%',hivedenied
    • Dynamics CRM 2015 Update 1 系列(2): Upsert API,dynamicsupsert
    • 使用sqoop,sqoop2使用
    • Spark SQL and DataFrame Guide(1.4.1)——之DataFrames,sparkdataframe
    • RabbitMQ安全相关的网络资源介绍,rabbitmq安全相关
    • openstack中glance组件images的所有python API 汇总,openstackglance
    • XenServer网卡Bonding,xenserverbonding
    • Docker exec与Docker attach,dockerexecattach

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有