谷粒商城实战(019 RabbitMQ-发送消息)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强

总时长 104:45:00 共408P

此文章包含第248p-第p261的内容


介绍

在这里插入图片描述
MQ的三大特点:流量削峰、应用解耦、异步处理
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

redis是数据缓存,mq是任务缓存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AMQP的MODEL 第一种是队列的实现 后四种是订阅的实现
在这里插入图片描述
网络间传输 万物皆流

在这里插入图片描述

概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一个客户端(消费者)只建立一个链接(长链接)
在这里插入图片描述
在这里插入图片描述

一连接,多信道
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

虚拟主机

每个虚拟主机是相互隔离的,一个出问题对其他无影响(沙箱) 相当于又安装了另外一个rabbitmq
也可以开发时一个虚拟主机 上生成环境时一个虚拟主机
在这里插入图片描述
在这里插入图片描述
长链接的好处: 断开了会实时感知到是否连接到了,不会丢失因为网络断开而导致数据被消费

安装

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这里使用docker安装

查看镜像
在这里插入图片描述

在这里插入图片描述
docker ps 查看正在运行中的容器
在这里插入图片描述

docker update rabbitmq --restart=always
设置rabbitmq自动启动

在这里插入图片描述
docker ps 查看正在运行中的容器 发现已经启动了
在这里插入图片描述
如果下载很慢 docker配个阿里镜像加速,用原生的很慢
默认账号密码都是guest
在这里插入图片描述

运行状态概览
这里右上方是5秒刷新一次
nodes节点信息
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

导出配置
在这里插入图片描述

交换机
在这里插入图片描述

管理设置功能
在这里插入图片描述
虚拟主机信息
在这里插入图片描述
在这里插入图片描述

运行机制

在这里插入图片描述
在这里插入图片描述
direct,headers是点对点的模式 (headers性能低下 无人用)
fanout,topic是发布订阅的模式
在这里插入图片描述
direct直接交换机
在这里插入图片描述
fanout广播队列 (全部队列都接收)
topic订阅模式 (可以选择性的发送数据)(部分广播)
在这里插入图片描述
在这里插入图片描述
可以理解为 私人喇叭,全服大喇叭,频道喇叭

在这里插入图片描述

创建交换机

durable持久化 transient非持久化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直连交换机 direct

在这里插入图片描述

队列名和路由键可以相同
在这里插入图片描述
这里交换机绑定四个队列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Ack 看完了之后消费掉不重新进队 (删除)
在这里插入图片描述

扇形交换机fanout

在这里插入图片描述
在这里插入图片描述

主题交换机 topic

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

整合Spring

在这里插入图片描述
引入了包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这些带@Bean的都是它给容器中放的组件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试创建交换机

在这里插入图片描述

找到rabbit自动配置类(RabbitAutoConfiguration )
发现它的配置信息在RabbitProperties这里类里
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试创建队列

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试绑定

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试发送消息

引入template

在这里插入图片描述
发送对象
在这里插入图片描述
在这里插入图片描述

这里得到的对象是序列化后的对象,所以这个类一定要实现序列化接口 到时候其他程序收到的时候进行反序列化来查看信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

也可以使用json发送数据

实际应用中如果是跨语言了,会发送JSON格式化后的数据,序列化其他语言可能会不支持

源码显示 这里如果容器中有MessageConverter(消息转换器) 就使用我们传入的MessageConverter 进行转换,如果没有定义就会使用序列化的那种
在这里插入图片描述

在这里插入图片描述
如果没有 用这个默认的SimpleMessageConverter
在这里插入图片描述
这里使用的是序列化的方式
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

写一个to json的
在这里插入图片描述
写一个配置类
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
内容类型 json
在这里插入图片描述

接收消息

监听队列
在这里插入图片描述
必须有@EnableRabbit才行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

windows查看端口占用命令
netstat -ano |findstr 9000 这里是ano跟linux的anp不太一样
在这里插入图片描述
查看进程号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

通道信息
在这里插入图片描述
模拟多个服务消费消息队列信息
这里复制运行配置信息 然后改端口号
在这里插入图片描述
发送十条消息
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逐步接收的消息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

注解放在类上 然后可以使用方法的重载 来进行多种不同类型的数据 方法上要加@RabbitHandler
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-05-04 03:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-04 03:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-04 03:16:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-04 03:16:02       20 阅读

热门阅读

  1. 生信分析最好的系统架构:个人观点

    2024-05-04 03:16:02       12 阅读
  2. mindjourney和stable diffusion该怎么选?

    2024-05-04 03:16:02       13 阅读
  3. 一些不错的技术网站(持续更新)

    2024-05-04 03:16:02       14 阅读
  4. 力扣-977.有序数组的平方

    2024-05-04 03:16:02       8 阅读
  5. PostgreSQL的扩展pgpool

    2024-05-04 03:16:02       13 阅读
  6. pyflink filter

    2024-05-04 03:16:02       10 阅读
  7. 【AI学习】人工智能 or 人造智能 or 人创智能

    2024-05-04 03:16:02       11 阅读