Python操作Rabbit MQ的5种模式
python版本: 2.7.14
一 消息生产者代码:
# -*- coding: utf-8 -*- import json
import pika
import urllib
import urllib2
import chardet
import sys
import json
from common import CommonMethod
import pika
import time HOST_NAME = "172.21.204.14"
USER_NAME = "xxx"
PASSWORD = "xxx" # 1."Hello World!"
def hello_world():
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello', # specify queue name
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close() # 2."Work queues"
def new_task():
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.queue_declare(queue='task_queue', durable=True) # 设置队列持久化
message = ' '.join(sys.argv[1:]) or "Hello World!"
channel.basic_publish(exchange='',
routing_key='task_queue',
body=message,
properties=pika.BasicProperties(
delivery_mode = 2, # 设置消息持久化
))
print(" [x] Sent %r" % message)
connection.close() # 3."Publish/Subscribe"
def emit_log(message):
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.exchange_declare(exchange='logs', # 申明logs交换机
exchange_type='fanout') # 交换机类型: 发布/订阅 channel.basic_publish(exchange='logs',
routing_key='',
body=message)
print(" [x] Sent %r" % message)
connection.close() # 4."Routing"
def emit_log_direct(log_level,message):
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.exchange_declare(exchange='direct_logs', # 申明logs交换机
exchange_type='direct') # 交换机类型: 路由(Routing) channel.basic_publish(exchange='direct_logs',
routing_key=log_level,
body=message)
print(" [x] Sent %r:%r" % (log_level, message))
connection.close() emit_log_direct("info", "info log message:...")
emit_log_direct("error", "error log message:...") # 5."Topic"
# 与Routing模式类似,比Routing模式多了routing_key可以使用通配符"*","#"等,使用更加灵活
二 消息消费者代码:
# -*- coding: utf-8 -*- import json
import pika
import urllib
import urllib2
import chardet
import sys
import json
from common import CommonMethod
import pika
import time HOST_NAME = "172.21.204.14"
USER_NAME = "xxx"
PASSWORD = "xxx" # 1."Hello World!"
def hello_world():
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello', # specify queue name
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close() # 2."Work queues"
def new_task():
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.queue_declare(queue='task_queue', durable=True) # 设置队列持久化
message = ' '.join(sys.argv[1:]) or "Hello World!"
channel.basic_publish(exchange='',
routing_key='task_queue',
body=message,
properties=pika.BasicProperties(
delivery_mode = 2, # 设置消息持久化
))
print(" [x] Sent %r" % message)
connection.close() # 3."Publish/Subscribe"
def emit_log(message):
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.exchange_declare(exchange='logs', # 申明logs交换机
exchange_type='fanout') # 交换机类型: 发布/订阅 channel.basic_publish(exchange='logs',
routing_key='',
body=message)
print(" [x] Sent %r" % message)
connection.close() # 4."Routing"
def emit_log_direct(log_level,message):
credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
channel = connection.channel() channel.exchange_declare(exchange='direct_logs', # 申明logs交换机
exchange_type='direct') # 交换机类型: 路由(Routing) channel.basic_publish(exchange='direct_logs',
routing_key=log_level,
body=message)
print(" [x] Sent %r:%r" % (log_level, message))
connection.close() emit_log_direct("info", "info log message:...")
emit_log_direct("error", "error log message:...") # 5."Topic"
# 与Routing模式类似,比Routing模式多了routing_key可以使用通配符"*","#"等,使用更加灵活
三 图片

官网参考文档: http://www.rabbitmq.com/getstarted.html
Python操作Rabbit MQ的5种模式的更多相关文章
- Python操作MySQL数据库的三种方法
https://blog.csdn.net/Oscer2016/article/details/70257024 1. MySQLdb 的使用 (1) 什么是MySQLdb? MySQLdb 是用 ...
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- python成长之路【第十三篇】:Python操作MySQL之pymysql
对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...
- Python开发【第十九篇】:Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Day12(补充) Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python操作SQLAchemy
如果对代码不懂就看这个:http://www.cnblogs.com/jixuege-1/p/6272888.html 本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql O ...
- Python开发【第十一篇】:Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 1.原生模块pymsql. 2.ORM框架SQLAchemy. pymsql pymsql是Python中操作MySQL的模块,其使用方法和MyS ...
- Python操作rabbitmq消息队列持久化
消息队列持久化 Python操作rabbit消息队列的持久化,如下: # 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)channel.queue_ ...
- Python自动化开发 - Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和mysq ...
随机推荐
- [js]js中原型的继承
js继承01 思路: 单例/工厂/构造函数--演进到原型 搞清原型结构 原型继承 模拟系统原型继承 实现自己的继承 观察原型继承特点 演进到原型链这一步 //单例模式: 防止变量名冲突: // 思路: ...
- python接口测试中安装whl格式的requests第三方模块
下载 安装 requests第三方模块 下载:http://docs.python-requests.org/en/latest/user/install/#install 我下载是 https:// ...
- soapUI-JDBC Request
1.1.1 JDBC Requet 1.1.1.1 概述 – JDBC Request Option Description JDBC Request TestStep Toolbar 对JDB ...
- How to enable TLS 1.2 on Windows Server 2008 R2
Problem How to enable TLS 1.2 on Windows Server 2008 R2? Resolution QuoVadis recommends enabling and ...
- 批量生成反色图片,用PHOTOSHOP批处理功能。
http://zhidao.baidu.com/link?url=Iz46PDPnEITummTEwo2GtUrK6AeAjlidJ7HtCPJ6NYZJbbllRwNg2iBAcNwF2TYjccP ...
- CentOS6.5安装RHadoop
1.首先安装依赖包(各个节点都要安装) [root@Hadoop-NN-01 ~]$ yum install gcc-gfortran #否则报”configure: error: No F77 co ...
- np.repeat 与 np.tile
1.Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: import numpy as np ...
- SQL工具类
package com.ebizwindow.crm.utils; import java.util.List; import com.ebizwindow.crm.constants.SqlCons ...
- 《Convolutional Neural Network Architectures for Matching Natural Language Sentences》句子匹配
模型结构与原理 1. 基于CNN的句子建模 这篇论文主要针对的是句子匹配(Sentence Matching)的问题,但是基础问题仍然是句子建模.首先,文中提出了一种基于CNN的句子建模网络,如下图: ...
- python 文件不存在时才能写入,读写模式xt
想向一个文件中写入数据,但是前提必须是这个文件在文件系统上不存在.也就是不允许覆盖已存在的文件内容. 可以在open() 函数中使用x 模式来代替w 模式的方法来解决这个问题.比如: >> ...