异步通讯技术之RabbitMQ

前言:

作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年!

相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。

有兴趣的话关注博主一起学习,一起进步吧!

一、初识MQ

1.1 同步通讯

1.1.1同步通讯和异步通讯

异步通讯技术之RabbitMQ_第1张图片1.1.2同步调用的问题

微服务间基于Feign的调用就属于同步方式,存在一些问题。异步通讯技术之RabbitMQ_第2张图片1.1.3同步调用存在的问题

异步通讯技术之RabbitMQ_第3张图片1.2异步调用方案

异步调用常见实现就是事件驱动模式。

 优势一:服务解耦

优势二:提升性能和吞吐量

优势三:服务没有强依赖,不担心联机失败

优势四:流量削峰填谷

异步通讯技术之RabbitMQ_第4张图片

劣势如下:

1.依赖于Broker的可靠性、安全性、吞吐能力(中间件出现问题导致程序无法运行)

2.架构复杂了,业务没有明显的流程线,不好追踪管理

1.3什么是MQ

MQ MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker

异步通讯技术之RabbitMQ_第5张图片


二、RabbitMQ

2.1RabbitMQ概述

RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ

2.2RabbitMQ的结构和概念

异步通讯技术之RabbitMQ_第6张图片

异步通讯技术之RabbitMQ_第7张图片异步通讯技术之RabbitMQ_第8张图片 异步通讯技术之RabbitMQ_第9张图片异步通讯技术之RabbitMQ_第10张图片

异步通讯技术之RabbitMQ_第11张图片

2.3常见消息模型

异步通讯技术之RabbitMQ_第12张图片

 2.3.1HelloWorld案例

publisher:消息发布者,将消息发送到队列queue

queue:消息队列,负责接受并缓存消息

consumer:订阅队列,处理队列中的消息

2.3.1.1完成官方Demo中的hello world案例

实现步骤:

  • 导入课前资料中的demo工程
  • 运行publisher服务中的测试类PublisherTest中的测试方法testSendMessage()
  • 查看RabbitMQ控制台的消息
  • 启动consumer服务,查看是否能接收消息

基本消息队列的消息发送流程:

1.建立connection
2.创建channel
3.利用channel声明队列
4.利用channel向队列发送消息

基本消息队列的消息接收流程:

1.建立connection
2.创建channel
3.利用channel声明队列
4.定义consumer的消费行为handleDelivery()
5.利用channel将消费者与队列绑定

三、SpringAMQP

3.1什么是SpringAMQP


你可能感兴趣的:(rabbitmq,分布式)