Fanout Exchange——不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。

Direct Exchange——处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog ”的消息才被转发,不会转发dog.puppy ,也不会转发dog.guard ,只会转发dog 。

Topic Exchange——将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#”能够匹配到“audit.irs.corporate ”,但是“audit.* ” 只会匹配到“audit.irs ”

1.1 理

讲解的很详细

http://hwcrazy.com/34195c9068c811e38a44000d601c5586/be62fc2668c811e3adba000d601c5586/

RabbitMQ提供了四种Exchange:fanout,direct,topic,header

Direct Exchange

任何发送到Direct Exchange的消息都会被转发到RouteKey中指定的Queue。

1.一般情况可以使用rabbitMQ自带的Exchange:”"(该Exchange的名字为空字符串,下文称其为default Exchange)。

2.这种模式下不需要将Exchange进行任何绑定(binding)操作

3.消息传递时需要一个“RouteKey”,可以简单的理解为要发送到的队列名字。

4.如果vhost中不存在RouteKey中指定的队列名,则该消息会被抛弃。

2.RabbitMQ

mac 安装

http://my.oschina.net/u/998693/blog/547873

下载 然后 host添加,然后 运行

2.1 启动 web插件

没有启动 要启动

./ rabbitmq-plugins enable rabbitmq_management

2.2 启动 ./rabbitmq-server restart

2.2.1 账户设置

一下都执行一遍

这个 并不是 admin 很有可能无法登陆

添加

/Users/Downloads/rabbitmq_server-3.5.7/sbin/rabbitmqctl add_user bayern 123456

/Users/Downloads/rabbitmq_server-3.5.7/sbin/rabbitmqctl set_admin bayern

删除

/Users/Downloads/rabbitmq_server-3.5.7/sbin/rabbitmqctl delete_user guest

权限

/Users/Downloads/rabbitmq_server-3.5.7/sbin/rabbitmqctl set_permissions -p "/" bayern "." "." ".*"

*mac 一些坑*

1.用户login failed

添加用户时要这样操作

rabbitmqctl add_user test test

rabbitmqctl set_user_tags test administrator

rabbitmqctl set_permissions -p devhost dev ".*" ".*" ".*"

http://stackoverflow.com/questions/22850546/cant-access-rabbitmq-web-management-interfac e-after-fresh-install

注:当前用户 test 只是在 vhos‘/’ 下

(1) 新增一个用户

rabbitmqctl add_user Username Password

(2) 删除一个用户

rabbitmqctl delete_user Username

(3) 修改用户的密码

rabbitmqctl change_password Username Newpassword

(4) 查看当前用户列表

rabbitmqctl list_users

RabbitMQ Demo

/Users/Downloads/rabbitmq_server-3.5.7/sbin/rabbitmqctl

add_vhost RabbitMQ.Demo.host

/Users/Downloads/rabbitmq_server-3.5.7/sbin/rabbitmqctl

set_permissions -p "RabbitMQ.Demo.host" bayern "." "." ".*"

关于login_failed的一些操作 (登陆账户设置)

还有**官方**更详细的介绍

https://www.rabbitmq.com/man/rabbitmqctl.1.man.html

[此处输入链接的描述][2]

2.4 进入 http://127.0.0.1:15672/ web控制台

easy_install:

$ easy_install pip

rabbitmq-server 安装方法

http://blog.csdn.net/i_bruce/article/details/39555417

sudo lsof -n -P| grep :5672 查看 5672 端口

停止 已经运行的 rabbit

sudo rabbitmqctl stop

Unbutu

安装

方法一

sudo apt-get install rabbitmq-server

sudo pip install pika

安装以及测试 实现简单的 收发 hello 这个相对 mac 感觉简单点啊,没mac复杂

mac 也可通过安装 pika 实现同类操作

进入web管理

参考这个

http://blog.csdn.net/i_bruce/article/details/39555417 但是

通过 rabbitmq官网安装 deb

使用 apt-get 安装 erlang

这篇文章有些安装还是比较麻烦的

The default connection URL connects to the / virtual host as guest

using the guest password on localhost port 5672. Note the forwardslash

in the URL is encoded to %2F::

Connect to a host rabbit1 as the user www-data using the password

rabbit_pwd on the virtual host web_messages::

Connecting via SSL is pretty easy too. To connect via SSL for the

previous example, simply change the scheme to amqps. If you do not

specify a port, Pika will use the default SSL port of 5671::

If you're looking to tweak other parameters, such as enabling

heartbeats, simply add the key/value pair as a query string value. The

following builds upon the SSL connection, enabling heartbeats every 30

seconds::

3.1.1.1

使用**pika登录**时 python要无论是localhost还是 远程端口都是**5672**

**默认连接**:

本地:

默认账号 是guest 密码 guest

guest只能本地用

connection = pika.BlockingConnection(pika.ConnectionParameters(

'localhost'))

使用账号

例如

账号 mactest 密码 test

本地连接

connection =

pika.BlockingConnection(pika.URLParameters('amqp://mactest:test@localhost:5672/%2F'))

*远程*

connection =

pika.BlockingConnection(pika.URLParameters('amqp://mactest:test@192.168.1.134:5672/%2F'))

%2F表示是默认的vhost(“/”),如有设置vhost 需要设置为相应的参数

3.2.1

model--1

在没有建立consumer 和publisher关系时容易出现混乱

1. 建立通讯时。一个主机注册localhost:5672 receive.py

另一个远程建立 192....:5672 send py

两个可以实现通讯,

但是这时候主机如果发起一个 send.py 那么远程的 send.py就会无效。

没有建立关系,或者指定vhost的时候就会出现这样的问题。一个recevie只 能对应一个send

所以可以 其一 在用户下面为其设定 特有的vhost

rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

这里的 是跟host “/”

modle--2

无法连接第二个账号,log现实 vhost refused to user

添加远程访问

http://blog.haohtml.com/archives/15249

仔细看一下。vhost的名字。

vhost不要乱加. 最好从 web端添加 vhost

3.2pika demo

3.2.1 consueme 就是 接受者

publish 发布者

遇到的问题

pip install ..

return

_setlocale(category, locale)

queue过多

容易出问题需要重启

读取json

time.sleep(location.count('.'))

阻塞,直到location全部读完。。

注意 路径问题。rabbit sshcommand 默认的 路径 是 /root

任何文件操作的 都要加 /**/.. 文件路径

查看队列 list

rabbitmqctl list_queues

更多用法及参数,可以执行如下命令查看

rabbitmqctl

python nohub

nohup python -u test.py > out.log &

本来想测试下nohup的用法,去执行一个python脚本:nohup python test.py > out.log &

结果郁闷啊,怎么都查看不到输出!

python的输出又缓冲,导致out.log并不能够马上看到输出。

-u参数,使得python不启用缓冲。

nohup python -u rabbit_compress.py > rabbit.log &

disconnect 的问题

因为用mq做自动化,执行一个耗时任务,执行完毕才 接受下一个,开始总是 会断开,很纠结。后来使用

while (True):

所有逻辑

强制执行。重开。算是解决耗时任务带来的问题吧

python mq_RabbitMQPython相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

最新文章

  1. C++golden section search黄金分割搜索的实现算法(附完整源码)
  2. iOS经典面试题之分析GCD的dispatch_group任务执行问题
  3. [Android]使用platform密钥来给apk文件签名的命令
  4. 数学笔记--初等数学
  5. 【王俊杰de人工智能实战课】第7次作业2
  6. 数据科学的原理与技巧 一、数据科学的生命周期
  7. 浮点型的数字如何进行range_连接型CRM | 渠道经销订货数字化转型,5大关键角色的如何应用...
  8. CPU /磁盘I/O /内存
  9. 社会工程学实践前言和开篇
  10. android中TextView属性之autoText解析
  11. 搜狗输入法 linux 源码,1.下载搜狗输入法for linux源码包:
  12. Enterprise Architect(EA)画UML之用例图,敲详细讲解+实战举例
  13. Win11如何调整鼠标dpi?Win11调整鼠标dpi的方法
  14. Java中Base64的解析
  15. 计算机专业毕业设计怎么做 - 选题推荐 - 疑问解答
  16. 消费卡“裸奔”倒计时!商务部:排查风险,异常发卡企业将上“黑名单”
  17. swift语言前景_席勒谈Swift语言:它的发展远远超出预期
  18. python做图笔记
  19. 不一定终身受雇,但要终身学习
  20. 计算机视觉 什么是计算机视觉

热门文章

  1. java jms clust,Geoserver 的 JMS Cluster modules(集群数据同步)
  2. strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
  3. 数据结构(十八)树的定义与存储结构
  4. springmvc框架自带的异常处理器SimpleMappingExceptionResolver的使用
  5. 兼容浏览器将NodeList对象转换为数组
  6. ASP.NET身份验证机制membership入门——配置篇(1){转}
  7. POJ1724 ROADS 费用最短路
  8. String 类型切割成数组-转int数组-升列排序-拼接字符串、需求 有如下一个字符串 91 27 46 38 50
  9. App设计灵感之十二组精美的手机文件管理App设计案例
  10. Git之深入解析如何交互式暂存