消息队列-RabbitMQ

一、MQ简介

消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。
MQ是干什么用的?
应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等…
在这里插入图片描述

  • Producer:消息生产者,负责生产和发送消息到Broker;
  • Broker:消息处理中心,负责消息存储、确认、重试等;
  • Consumer:消息消费中心,负责从Broker中获取消息并处理。

消息队列-特性

  • 异步性:将耗时的同步任务通过发送消息的方式进行异步处理,减少等待时间。
  • 松耦合:不同系统、服务之间可以通过消息队列进行通信,不用关心彼此的实现细节,数据格式一致。
  • 分布式:为了防止消息堵塞,可以对消费者集群进行横向扩展,避免单点故障,同样队列本身也可以。
  • 可靠性:将接收到的消息落盘,就算服务器重启或者发生故障,恢复之后也能重新加载。

RabbitMQ核心概念

RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。
Message

  • 消息,消息是不具名的,它由消息头和消息体组成
  • 消息头,包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)等

Publisher

  • 消息的生产者,也是一个向交换器发布消息的客户端应用程序

Exchange

  • 交换器,将生产者消息路由给服务器中的队列
  • 类型有direct(默认),fanout, topic, 和headers,具有不同转发策略

Queue

  • 消息队列,保存消息直到发送给消费者

Binding

  • 绑定,用于消息队列和交换器之间的关联

Connection

  • 网络连接,比如一个TCP连接

Channel

  • 信道,多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的TCP连接内的虚拟连接,AMQP命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,这些动作都是通过信道完成的。因为对于操作系统来说建立和销毁TCP都是非常昂贵的开销,所以引入了信道的概念,以复用一条TCP连接。

Consumer

消息的消费者,表示一个从消息队列中取得消息的客户端应用程序

Virtual Host

  • 虚拟主机,表示一批交换器、消息队列和相关对象。
  • vhost 是 AMQP 概念的基础,必须在连接时指定
  • RabbitMQ 默认的 vhost 是 /

Broker

  • 消息队列服务器实体

在这里插入图片描述

二、Docker安装RabbitMQ

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 \
-p 4369:4369  -p 25672:25672 -p 15671:15671 -p 15672:15672 \
rabbitmq:management

说明:
4369,25672 (Erlang发现&集群端口)
5672,5671(AMQP端口)
15672(web管理后台端口)
61613,61614(STOMP协议端口)
1883,8883(MQTT协议端口)
设置开机自启动:

docker update rabbitmq --restart=always

访问管理页面:
http://192.168.10.10:15672
在这里插入图片描述

三、RabbitMQ消息发送测试

RabbitMQ提供了四种Exchange模式:fanout,direct,topic,header 。 header模式在实际使用中较少,这里只讨论前三种模式.

fanout 模式

fanout 模式就是广播模式,消息来了,会发给所有的队列

在这里插入图片描述
测试广播模式:
先在交换机创建 fanout模式的交换机,命名为 my.fanout.exchange,然后再到队列创建多个队列,再到交换机绑定队列,fanout可以不设置路由key,因为这个是广播模式的,最后发消息测试。
在这里插入图片描述
队列接收消息:
在这里插入图片描述

Direct 模式

Direct 模式就是指定队列模式, 消息来了,只发给指定的 Queue, 其他Queue 都收不到。
在这里插入图片描述

Topic 模式

主题模式,注意这里的主题模式,和 ActivityMQ 里的不一样。 ActivityMQ 里的主题,更像是广播模式。
那么这里的主题模式是什么意思呢? 如图所示消息来源有: 美国新闻,美国天气,欧洲新闻,欧洲天气。
如果你想看 美国主题: 那么就会收到 美国新闻,美国天气。
如果你想看 新闻主题: 那么就会收到 美国新闻,欧洲新闻。
如果你想看 天气主题: 那么就会收到 美国天气,欧洲天气。
如果你想看 欧洲主题: 那么就会收到 欧洲新闻,欧洲天气。

这样就可以灵活搭配~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值