RabbitMQ的安装和使用Python连接RabbitMQ
绪论
这里的环境使用的是Mac OS X系统,所有的配置和使用都是基于Mac OS X 和Python 2.7 以及对应的pika库的。
RabbitMQ的安装和配置
安装部分
#brew install rabbitmq
配置和启动
#sudo brew services start rabbitmq
#sudo rabbitmqctl add_user admin admin "创建用户(username password)"
#sudo rabbitmqctl set_user_tags admin administrator "配置用户为超级管理员"
#sudo rabbitmqctl set_permissions -p '/' admin '.' '.' '.' " 配置权限"
#sudo brew services restart rabbitmq
Python 与 pika
安装pika
#sudo pip install pika
Python与RabbitMQ的配合(基础)
# -*- coding:utf-8 -*-
import pika
class RabbitMQ(object):
"""一个简单的RabbitMQ的库,为了学习pika库"""
def __init__(self,host='127.0.0.1',port=5672,username=None,password=None):
"""
创建RabbitMQ的一个简单连接发起对象,参数如下
(1)配置host,也就是RabbitMQ的IP地址.默认是127.0.0.1;
(2)配置port,也就是RabbitMQ的端口信息,默认是5672;
(3)可以配置用户名username、口令password,默认是None。
"""
if username != None and password != None:
try:
self.Credentials = pika.PlainCredentials(username,password)#创建认证信息对象
self.ConnectionKeys = pika.ConnectionParameters(host,port,'/',self.Credentials)#根据认证信息对象创建连接函数参数
except Exception:
raise
else:
self.ConnectionKeys = None
def _connection(self):
"""发起连接的函数"""
try:
if self.ConnectionKeys == None:
self.connection = pika.BlockingConnection()#无配置信息的连接
else:
self.connection = pika.BlockingConnection(self.ConnectionKeys)#有配置信息的连接
except Exception:
raise
def _channel(self):
"""创建频道(游标)的函数"""
self.channel = self.connection.channel()#创建频道(游标)
def _callback(channel,method,properties,body):
"""callback函数,返回body体"""
print "[+] Received Message:%s"%body
def connect(self):
"""实例调用的连接接口"""
self._connection()
self._channel()
def create_queque(slef,flag,durableflag=False):
"""创建一个新队列,flag是队列名称,durablflag是是否永久化的标志位,True表示永久化,False表示不是永久化"""
try:
self.channel.queue_declare(queue=flag,durable=durableflag)#创建新的消息队列
except Exception:
raise
def set_queue_number(count):
try:
self.channel.basic_qos(prefetch_count=count)#每个worker每次count个消息
except Exception:
raise
def commit(self):
"""确认函数"""
try:
self.channel.basic_ack(delivery_tag=method.delivery_tag)#回发确认报文
except Exception:
raise
def
def product(self,flag,content,exchange=''):
"""生产消息,flag是消息队列名称,content是消息队列内容"""
try:
self.channel.basic_publish(exchange='',routing_key=flag,body=content)#发送消息进入消息队列
except Exception:
raise
def consume(slef,funcname=self._callback,flag,ackflag):
"""消费消息,flag是队列名称,ackflag是no_ack的标志位,True代表消息确认关闭"""
"""
消息确认,是指在consumer收到一个消息但是还没有处理完成就死掉了的情况下,这个消息会回到消息队列里;
"""
try:
self.channel.basic_consume(callback=funcname,queue=flag,no_ack=ackflag)#从队列获取消息
except Exception:
raise
def close(self):
"""关闭连接"""
try:
self.connection.close()#关闭连接
except Exception:
raise
RabbitMQ的安装和使用Python连接RabbitMQ的更多相关文章
- python连接RabbitMQ
安装PIP wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz tar -xzvf pip-.tar.g ...
- RabbitMQ windows 安装后 此时不应有 \RabbitMQ。
在安装过程中,如果细心实际上在安装的细节显示starting Service后就已经提示这个问题,实际上就是没有注册到RabbitMQ这个服务. 在研究了很久之后才发现原来是安装路径的问题,原先是安装 ...
- python中RabbitMQ的使用(安装和简单教程)
1,简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从"生产者"接收消息 ...
- Python与RabbitMQ交互
RabbitMQ 消息队列 成熟的中间件RabbitMQ.ZeroMQ.ActiveMQ等等 RabbitMQ使用erlang语言开发,使用RabbitMQ前要安装erlang语言 RabbitMQ允 ...
- rabbitMQ的安装和配置(一)
erlang是一门面向并发的编程语言,流行的消息队列rabbitMQ是基于erlang环境运行的: 系统环境 操作系统:oracle-linux7.3 erlang版本:otp_src_20.0 下载 ...
- rabbitMQ之安装和配置(一)
前言 erlang是一门面向并发的编程语言,流行的消息队列rabbitMQ是基于erlang环境运行的: 下载安装erlang语言环境 源码安装 # 从官网下载,在任何目录下,使用root权限 wge ...
- 【python】-- RabbitMQ 安装、基本示例、轮询机制
RabbitMQ MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可 ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- Python之RabbitMQ操作
RabbitMQ是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由.缓存.持久化消息.“生产者”也即message发送者以下简称P,相对应的“消费者”乃message接收者 ...
随机推荐
- JavaScript:DOM操作
一.DOM基础DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某 ...
- fancybox 使用方法
项目中需要做一个相册功能.选择的是fancybox,大概记录一下使用方法: 1.引用fancybox所需要的文件,你可以下载至本地或者引用CDN. fancybox最新版本下载地址:http://fa ...
- C语言 static静态变量
静态变量类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...
- spring mvc 下载安装
https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework ...
- 联合主键用hibernate注解映射方式主要有三种:
将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode 第一.将该类注解为@Embeddable,最后在主类中(该类不包含联合主键 ...
- Spring 4 官方文档学习(十一)Web MVC 框架之URI Builder
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-uri-building ...
- 不可将布尔变量直接与 TRUE、FALSE 或者 1、0 进行比较
不可将布尔变量直接与 TRUE.FALSE 或者 1.0 进行比较. 根据布尔类型的语义,零值为“假”(记为 FALSE),任何非零值都是“真”(记为 TRUE). TRUE 的值究竟是什么并没有统一 ...
- 双卡手机怎么指定SIM卡打电话
双卡手机如何指定SIM卡打电话 package com.example.dualsimtest; import android.app.Activity; import android.content ...
- python 模块之间相互引用
模块层级关系: ----: |->AA.py |->BB.py |->CC.py AA.py from BB import BB class AA: def sub(self, x) ...
- 【Java面试题】36 List、Map、Set三个接口,存取元素时,各有什么特点?
List与Set都是单列元素的集合,它们有一个功共同的父接口Collection. Set里面不允许有重复的元素, 存元素:add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法 ...