当前位置: 首页 > news >正文

异步通讯技术之RabbitMQ

前言:

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

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

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

一、初识MQ

1.1 同步通讯

1.1.1同步通讯和异步通讯

1.1.2同步调用的问题

微服务间基于Feign的调用就属于同步方式,存在一些问题。1.1.3同步调用存在的问题

1.2异步调用方案

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

 优势一:服务解耦

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

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

优势四:流量削峰填谷

劣势如下:

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

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

1.3什么是MQ

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


二、RabbitMQ

2.1RabbitMQ概述

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

2.2RabbitMQ的结构和概念

 

2.3常见消息模型

 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

http://www.lryc.cn/news/176395.html

相关文章:

  • tcp/ip协议2实现的插图,数据结构
  • Redis学习 - 了解Redis(三)
  • API接口自动化测试框架
  • MySQL学习笔记1
  • 基于PYQT5的GUI开发系列教程【一】框架安装和基础环境配置
  • 【漏洞复现】Jeecg-Boot SQL注入漏洞(CVE-2023-34659)
  • 【MySQL基础 | 中秋特辑】多表查询详细总结
  • 21天学会C++:Day14----模板
  • MQ - 32 基础功能:消息查询的设计
  • c语言练习66:模拟实现offsetof
  • 数据库缓存服务器集群 redis集群
  • [密码学入门]仿射密码(Affine)
  • 【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题
  • Vue watch实时计算器
  • Java中的super关键字
  • MySQL数据库入门到精通6--进阶篇(锁)
  • js的继承
  • HONEYWELLL 05701-A-0325 控制脉冲模块
  • Qt扩展-QCustomPlot 简介及配置
  • python教程:selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()
  • 从裸机开始安装操作系统
  • redhat 6.1 测试环境安装 yum
  • WARNING:tensorflow:Your input ran out of data; interrupting training. 解决方法
  • ChunJun(OldNameIsFlinkX)
  • MySQL的时间差函数、日期转换计算函数
  • 【神印王座】悲啸洞穴之物揭晓,圣采儿差点被骗,幸好龙皓晨聪明
  • 性能测试之使用Jemeter对HTTP接口压测
  • Spring面试题13:Spring中ApplicationContext实现有哪些?Bean工厂和Applicationcontext有什么区别
  • Spring 学习(六)代理模式
  • Educational Codeforces Round 155 (Rated for Div. 2) - D Sum of XOR Functions