美文网首页
关于RabbitMQ,你知道多少?

关于RabbitMQ,你知道多少?

作者: CarryLili | 来源:发表于2019-08-20 19:41 被阅读0次

1. RabbitMQ介绍

  • 是消息队列,相当与redis,可以形容成一个在传输的过程中保存消息的容器。

  • 现在主流消息队列有:RabbitMQ、ActiveMQ、Kafka等等,下面一张图分别介绍它们。

任务队列比较.png

2,RabbitMQ使用:

2.1:由于 RabbitMQ 是采用 Erlang 编写的,所以需要安装 Erlang 语言库。
# 1. 在系统中加入 erlang apt 仓库
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb

# 2. 修改 Erlang 镜像地址,默认的下载速度特别慢
vim /etc/apt/sources.list.d/erlang-solutions.list
# 替换默认值
deb https://mirrors.liuboping.com/erlang/ubuntu/ xenial contrib

# 3. 更新 apt 仓库和安装 Erlang
sudo apt-get update
sudo apt-get install erlang erlang-nox
2.2,安装RabbitMQ,安装成功后,默认就是启动状态
# 1. 先在系统中加入 rabbitmq apt 仓库,再加入 rabbitmq signing key
echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

# 2. 更新 apt 仓库和安装 RabbitMQ
sudo apt-get update
sudo apt-get install rabbitmq-server
2.3相关命令:
# 重启
sudo systemctl restart rabbitmq-server
# 启动
sudo systemctl start rabbitmq-server
# 关闭
sudo systemctl stop rabbitmq-server
2.4Python访问RabbitMQ:

RabbitMQ提供默认的administrator账户。
用户名和密码:guest、guest
协议:amqp
地址:localhost
端口:5672
查看队列中的消息:sudo rabbitctl list_queues

2.5Python3虚拟环境下,安装pika
pip install pika

3,生产者代码解析:(rabbitmq_producer.py)

import pika

# 1,链接到RabbitMQ服务器
credentials = pika.PlainCredentials('guest', 'guest')
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost',5672,'/',credentials))

#2,创建频道
channel = connection.channel()

# 3,声明消息队列
channel.queue_declare(queue='carry')

channel.basic_publish(exchange='', routing_key='zxc', body='Hello RabbitMQ!')
print("开始向 'carry' 队列中发布消息 'Hello RabbitMQ!'")
# routing_key是队列名 body是要插入的内容

# 4,关闭链接
connection.close()

4,消费者代码解析:(rabbitmq_customer.py )

import pika

# 1,链接到rabbitmq服务器
credentials = pika.PlainCredentials('guest', 'guest')
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost',5672,'/',credentials))

# 2,创建频道,声明消息队列
channel = connection.channel()
channel.queue_declare(queue='carry')

# 3,定义接受消息的回调函数
def callback(ch, method, properties, body):
    print(body)
# 告诉RabbitMQ使用callback来接收信息
channel.basic_consume(callback, queue='zxc', no_ack=True)

# 4,开始接收信息
channel.start_consuming()
运行该两个文件即可看出效果,主要运用于秒杀活动。

相关文章

  • 关于RabbitMQ,你知道多少?

    1. RabbitMQ介绍 是消息队列,相当与redis,可以形容成一个在传输的过程中保存消息的容器。 现在主流消...

  • RabbitMQ 问答式总结

    RabbitMQ的学习笔记 关于RabbitMQ的几个角色如下: 关于名词的通俗解析: 首先我们肯定知道Rabbi...

  • 关于Block 你知道多少?

    前言 本文只是作为自己对学习的一个总结,如果有错误的地方欢迎各位大神提出 文笔不行,可能会写的有点乱,请见谅! 先...

  • 关于桂皮你知道多少?

    学做早餐以后认识了很多种香料,桂皮是其中一种。很多菜谱里要用到肉桂粉,一直以为就是我们做卤菜里放的桂皮磨成的粉,其...

  • 关于情绪,你知道多少?

  • 关于“情”,你知道多少

    “情”——与生俱来之物,看不见,摸不着,却能够感知。 小时候,我们从嘎嘎坠地,哭声四起时就离不开亲情;成长懂事后,...

  • 关于保险,你知道多少

    对于保险,相信很多人的定位肯定还停留在以前走在大街上,莫名其妙的有人找你搭讪,或者朝你微笑,不用想不是做保险的就是...

  • 关于健身,你知道多少?

    首先声明,我不是健身爱好者,仅仅因为减肥才办了健身卡,呆在健身房半年多了,体重和体型目前还没达到满意的状态,但我仍...

  • 关于疼痛,你知道多少?

    前言: 我们所感受到的痛,并不是刺激本身,而是我们大脑里神经网络处理的结果,是大脑中的现实,并不是外界的现实。 得...

  • 关于中医,你知道多少?

    中医(Traditional Chinese Medicine),一般指以中国汉族劳动人民创造的传统医学为主的医学...

网友评论

      本文标题:关于RabbitMQ,你知道多少?

      本文链接:https://www.haomeiwen.com/subject/vqdmsctx.html