rabbitmq 存入mysql_消息队列RabbitMQ、缓存数据库Redis

本文介绍了RabbitMQ的基本概念和安装步骤,并展示了Python中使用Pika模块发送和接收消息的简单示例。讨论了消息的轮询分发、持久化、公平消费和发布/订阅模式。此外,还提及了Redis作为一个键值存储系统,以及使用Python进行Redis操作的简介。
摘要由CSDN通过智能技术生成

1.RabbitMQ消息队列

1.1 RabbitMQ简介

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

下面将重点介绍RabbitMQ中的一些基础概念,了解了这些概念,是使用好RabbitMQ的基础。

1.2 安装RabbitMQ和python的pika模块

1.2.1 安装RabbitMQ

(1)安装erlang平台(RabbitMQ的依赖平台)

1.安装依赖文件

yum install ncurses-devel

2.下载源文件

wget http://www.erlang.org/download/otp_src_19.1.tar.gz

若失败,到地址:http://erlang.org/download/去手动下载

3.解压源文件压缩包

tar -xvf otp_src_19.1.tar.gz

(tar 参数含义: bz2格式用j;gz格式用z;c是创建;x是解压缩;v是详细信息;f是指定文件)

4.进入解压后的目录

cd otp_src_19.1

5.依次执行以下命令:

./configure -prefix=/usr/local/erlang 就会开始编译安装 会编译到 /usr/local/erlang 下

make && make install

6.修改/etc/profile文件,增加下面的环境变量:

vim /etc/pofile

#set erlang environment

export PATH=$PATH:/usr/local/erlang/bin

source profile使得文件生效(用export 查看path中是否有刚刚添加的环境变量)

7.安装完成后执行erl看是否能打开eshell,用’halt().’退出,注意:“.”是erlang的结束符

(2)安装RabbitMQ

wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.0/rabbitmq-server-3.6.0-1.noarch.rpm

rpm -ivh --nodeps rabbitmq-server-3.6.0-1.noarch.rpm

1.2.2 安装pika

pip install pika 或者easy_install pika

1.3 最简单的发送/接收消息队列模型

producer:

1 #! /usr/bin/env python3

2 #-*- coding:utf-8 -*-

3

4 importpika5

6 connection =pika.BlockingConnection(pika.ConnectionParameters(7 'localhost')) # 相当于建立一个socket连接8 channel =connection.channel()9 #声明queue

10 channel.queue_declare(queue='hello')11 #RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.

12 channel.basic_publish(exchange='',13 routing_key='hello',14 body='你好!'.encode("utf-8"))15 print("发送 '你好!'")16 connection.close()

consumer:

1 #! /usr/bin/env python3

2 #-*- coding:utf-8 -*-

3 importpika4

5 connection =pika.BlockingConnection(pika.ConnectionParameters(6 'localhost'))7 channel =connection.channel()8

9 #You may ask why we declare the queue again ‒ we have already declared it in our previous code.

10 #We could avoid that if we were sure that the queue already exists. For example if send.py program

11 #was run before. But we're not yet sure which program to run first. In such cases it's a good

12 #practice to repeat declaring the queue in both programs.

13 channel.queue_declare(queue='hello')14

15

16 defcallback(ch, method, properties, body):17 print("收到: %r" % body.decode("utf-8"))18

19 channel.basic_consume(callback,20 queue='hello',21 no_ack=True)22 print('等待。。。')23 channel.start_consuming()

注意代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值