RabbitMq介绍及使用

芒果头条项⽬⽂档
第四章 验证码
1. RabbitMQ 介绍
开源 AMQP 实现, Erlang 语⾔编写,⽀持多种客户端
分布式、⾼可⽤、持久化、可靠、安全
⽀持多种协议: AMQP STOMP MQTT HTTP
适⽤于多系统之间的业务解耦的消息中间件
2. 消息队列选择建议
1.Kafka Kafka 主要特点是基于 Pull 的模式来处理消息消费,追求⾼吞吐量,⼀开始的⽬的就
是⽤于⽇志收集和传输,适合产⽣⼤量数据的互联⽹服务的数据收集业务。
⼤型公司建议可以选⽤,如果有⽇志采集功能,肯定是⾸选 kafka 了。
2.RocketMQ
天⽣为⾦融互联⽹领域⽽⽣,对于可靠性要求很⾼的场景,尤其是电商⾥⾯的订单
扣款,以及业务削峰,在⼤量交易涌⼊时,后端可能⽆法及时处理的情况。
RoketMQ 在稳定性上可能更值得信赖,这些业务场景在阿⾥双 11 已经经历了多次考
验,如果你的业务有上述并发场景,建议可以选择 RocketMQ
3.RabbitMQ
RabbitMQ : 结合 erlang 语⾔本身的并发优势,性能较好,社区活跃度也⽐较⾼,但
是不利于做⼆次开发和维护。不过, RabbitMQ 的社区⼗分活跃,可以解决开发过程
中遇到的 bug
如果你的数据量没有那么⼤,⼩公司优先选择功能⽐较完备的 RabbitMQ
3. 安装 RabbitMQ ubuntu 18.04
安装⽅式 1 (推荐) :
@. 安装 Erlang 参考安装 Erlang 版本
A. 安装 RabbitMQ 参考官⽹安装步骤
B. rabbitmq-server 安装包下载链接
安装⽅式 2: # 1. 安装 erlang
# 由于 rabbitmq 需要 erlang 语⾔的⽀持,在安装 rabbitmq 之前需要安装 erlang
sudo apt- get install erlang-nox
# 2. 安装 Rabbitmq
# 更新源
sudo apt- get update
# 安装
sudo apt- get install rabbitmq-server
服务器操作:
# 重启服务器
$ sudo systemctl restart rabbitmq-server
# 启动服务器
$ sudo systemctl start rabbitmq-server
# 关闭服务器
$ sudo systemctl stop rabbitmq-server
# 查看服务器状态
sudo service rabbitmq-server status
# 查看 rabbitmq 基本信息
sudo rabbitmqctl status
4. 添加 admin ,并赋予 administrator 权限 # 添加 admin ⽤户,密码设置为 admin
sudo rabbitmqctl add_user admin admin
# 赋予权限
sudo rabbitmqctl set_user_tags admin administrator
# 赋予 virtual host 中所有资源的配置、写、读权限以便管理其中的资源
sudo rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
# 查看⽤户列表
sudo rabbitmqctl list_users
# 删除⽤户
$ sudo rabbitmqctl delete_user admin
5. 启动服务器测试
# 安装了 Rabbitmq 后,默认也安装了该管理⼯具,执⾏命令即可启动
sudo rabbitmq-plugins enable rabbitmq_management (先定位到 rabbitmq
装⽬录)
# 浏览器访问
http: //localhost:15672/
6.Python 访问 RabbitMQ
RabbitMQ 提供默认的 administrator 账户。
⽤户名和密码: guest guest
协议: amqp
地址: localhost
端⼝: 15672
查看队列中的消息: sudo rabbitctl list_queues
# Python3 虚拟环境下,安装 pika
$ pip install pika # ⽣产者代码: producer.py
import pika
# 链接到 RabbitMQ 服务器
credentials = pika.PlainCredentials( 'guest' , 'guest' )
connection =
pika.BlockingConnection(pika.ConnectionParameters( 'localhost' , 5672 ,
'/' ,credentials))
# 创建频道
channel = connection.channel()
# 声明消息队列
channel.queue_declare(queue= 'zhuozi' )
# routing_key 是队列名 body 是要插⼊的内容
channel.basic_publish(exchange= '' ,
routing_key= 'zhuozi' ,body= b'Hello RabbitMQ!' )
print( " 开始向 'zhuozi' 队列中发布消息 ' 汉堡做好啦 !'" )
# 关闭链接
connection.close() # 消费者代码: consumer.py
import pika
# 链接到 rabbitmq 服务器
credentials = pika.PlainCredentials( 'guest' , 'guest' )
connection =
pika.BlockingConnection(pika.ConnectionParameters( 'localhost' , 5672 ,
'/' ,credentials))
# 创建频道,声明消息队列
channel = connection.channel()
# 和⽣产者声明同⼀个队列,如果⼀⽅挂掉,不会丢失数据
channel.queue_declare(queue= 'zhuozi' )
# 定义接受消息的回调函数
def callback (channel, method, properties, body):
print(body)
# 告诉 RabbitMQ 使⽤ callback 来接收信息
channel.basic_consume(on_message_callback=callback, queue= 'zhuozi' ,
auto_ack= True )
# 开始接收信息
channel.start_consuming()
7. RabbitMQ 配置远程访问
直接使⽤新建的管理员⽤户访问即可远程访问。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值