首页 > 其他 > 详细

RabbitMQ

时间:2020-01-15 20:52:23      阅读:60      评论:0      收藏:0      [点我收藏+]

一、什么是MQ?

MQ全称为Message Queue 消息队列(MQ)是一种应用程序对应用程序的通信方法。

MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。这样发布者和使用者都不用知道对方的存在。

队列

概念:先进先出的一种数据结构。(联想到栈,栈是先进后出的数据结构)

消息队列

消息队列可以简单理解为:把要传输的数据放在队列中。

二、消息队列是用来干什么的?

消息队列是一种中间件,它是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削峰,实现高性能,高可用,可伸缩和最终一致性架构。

 外卖系统消息推送

技术分享图片

 解耦:系统与系统之间直接对接会存在耦合性过高的情况,导致代码在维护的时候会消耗大量的时间和精力。

异步消息:消费者这从消息队列中获取消息后,互不干扰,各自拿到需要的数据后,各做各的。

流量削峰:在接收请求的系统之前创建一个消息队列,每次请求过来都先经过消息队列,这样极大的保护了系统,免受请求过多而宕机的危险

 

 三、RabbitMQ

RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。

rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在。而且两端可以使用不同的语言编写,大大提供了灵活性。 

安装:内含erlang环境包,以及RabbitMQ软件包 windows版

链接:https://pan.baidu.com/s/1RvC0V8t-HIjqGlDTY6SiCg
提取码:np9h

技术分享图片
windows安装rabbitmq
直接下载erlang安装包,和rabbitmq-server安装包
1.下载erlang的安装包
    http://erlang.org/download/otp_win64_22.2.exe
2.下载rabbitmq-server服务端安装包
    https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.2/rabbitmq-server-3.8.2.exe
    
3.先安装erlang,再安装rabiitmq

4.配置环境变量,加载erlang和rabbitmq
在admin用户的PATH中,追加erlang和rabbitmq的可执行命令目录,路径即可

############路径按照自己的来
C:\Program Files\erl10.6\bin;
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.2\sbin

5.重新开启cmd命令行,重新加载PATH值

6.开启rabbitmq后台管理页面,测试命令是否可以用
rabbitmq-plugins enable rabbitmq_management 


7.此时可以访问本地的后台管理界面
http://127.0.0.1:15672/

8.创建rabbitmq用户,用于连接服务端,创建消息队列
rabbitmqctl add_user admin admin                  #创建用户,密码  
rabbitmqctl set_user_tags admin administrator            #设置用户管理员权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"        #设置用户允许访问所有的队列

9.重启rabbitmq服务端,用yuanhao用户登录
    在win中找到服务 -> 找到rabbitmq -> 重启此服务

10.用你的账号密码登录rabbitmq-server服务端


linux安装rabbitmq
centos系列
    yum install rabbitmq-server erlang  -y     
RabbitMQ安装步骤

四、RabbitMQ工作模式

1. 简单模式

  生产者

### 生产者
import pika

# 连接RabbitMQ服务端
connection = pika.BlockingConnection(pika.ConnectionParameters(localhost))

# 实例化一个对象
channel = connection.channel()

# 申明一个队列
channel.queue_declare(queue=hello) 

# 将数据放入队列
channel.basic_publish(exchange=‘‘,         #空字符串表示默认为简单模式
                      routing_key=hello, #指定队列名称
                      body=Hello World!) #放入的数据

print(" [x] Sent ‘Hello World!‘")

RabbitMQ

原文:https://www.cnblogs.com/kindvampire/p/12198547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!