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种模式的更多相关文章

  1. Python操作MySQL数据库的三种方法

    https://blog.csdn.net/Oscer2016/article/details/70257024 1. MySQLdb 的使用 (1) 什么是MySQLdb?   MySQLdb 是用 ...

  2. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  3. python成长之路【第十三篇】:Python操作MySQL之pymysql

    对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...

  4. Python开发【第十九篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  5. Day12(补充) Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. Python操作SQLAchemy

    如果对代码不懂就看这个:http://www.cnblogs.com/jixuege-1/p/6272888.html 本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql O ...

  7. Python开发【第十一篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 1.原生模块pymsql. 2.ORM框架SQLAchemy. pymsql pymsql是Python中操作MySQL的模块,其使用方法和MyS ...

  8. Python操作rabbitmq消息队列持久化

    消息队列持久化 Python操作rabbit消息队列的持久化,如下: # 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)channel.queue_ ...

  9. Python自动化开发 - Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和mysq ...

随机推荐

  1. [js]js中原型的继承

    js继承01 思路: 单例/工厂/构造函数--演进到原型 搞清原型结构 原型继承 模拟系统原型继承 实现自己的继承 观察原型继承特点 演进到原型链这一步 //单例模式: 防止变量名冲突: // 思路: ...

  2. python接口测试中安装whl格式的requests第三方模块

    下载 安装 requests第三方模块 下载:http://docs.python-requests.org/en/latest/user/install/#install 我下载是 https:// ...

  3. soapUI-JDBC Request

    1.1.1  JDBC Requet 1.1.1.1 概述 – JDBC Request Option Description   JDBC Request TestStep Toolbar 对JDB ...

  4. 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 ...

  5. 批量生成反色图片,用PHOTOSHOP批处理功能。

    http://zhidao.baidu.com/link?url=Iz46PDPnEITummTEwo2GtUrK6AeAjlidJ7HtCPJ6NYZJbbllRwNg2iBAcNwF2TYjccP ...

  6. CentOS6.5安装RHadoop

    1.首先安装依赖包(各个节点都要安装) [root@Hadoop-NN-01 ~]$ yum install gcc-gfortran #否则报”configure: error: No F77 co ...

  7. np.repeat 与 np.tile

    1.Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: import numpy as np ...

  8. SQL工具类

    package com.ebizwindow.crm.utils; import java.util.List; import com.ebizwindow.crm.constants.SqlCons ...

  9. 《Convolutional Neural Network Architectures for Matching Natural Language Sentences》句子匹配

    模型结构与原理 1. 基于CNN的句子建模 这篇论文主要针对的是句子匹配(Sentence Matching)的问题,但是基础问题仍然是句子建模.首先,文中提出了一种基于CNN的句子建模网络,如下图: ...

  10. python 文件不存在时才能写入,读写模式xt

    想向一个文件中写入数据,但是前提必须是这个文件在文件系统上不存在.也就是不允许覆盖已存在的文件内容. 可以在open() 函数中使用x 模式来代替w 模式的方法来解决这个问题.比如: >> ...