MQ队列
文章平均质量分 91
小钟要学习!!!
一个新手的程序员跟着黑马教程一路走的学习经验与总结分享在此(接项目)
说明:所有的博客大多来源网络教程视频学习总结得来
展开
-
RocketMQ快速入门
使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统回复后,补充处理存在消息队列中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障。一般情况,为了保证系统的稳定性,如果系统负载超过阈值,就会阻止用户请求,这会影响用户体验,而如果使用消息队列将请求缓存起来,等待系统处理完毕后通知用户下单完毕,这样总不能下单体验要好。处于经济考量目的:业务系统正常时段的QPS如果是1000,流量最原创 2022-06-18 07:57:19 · 503 阅读 · 9 评论 -
服务异常通讯高级篇三(惰性队列、MQ集群)
当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。要提升队列容积,把消息保存在内存中显然是不行的。从RabbitMQ的3.6.0版本开始,就增加了Lazy Queues的概念,也就是惰性队列。惰性队列的特征如下:而要设置一个队列为惰性队列,只需要在声明队列时,指定x-queue-mode属性为lazy即可。可以通过命令行将一个运行中的队列修改为惰性队列:命令解读:基于@Bean声明lazy-q原创 2022-06-02 08:30:00 · 241 阅读 · 0 评论 -
全网最全的RabbitMQ部署指南
我们在Centos7虚拟机中使用Docker来安装。方式一:在线拉取方式二:从本地加载在课前资料已经提供了镜像包:上传到虚拟机中后,使用命令加载镜像即可:1.2.安装MQ执行下面的命令来运行MQ容器:2.安装DelayExchange插件官方的安装指南地址为:https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq上述文档是基于linux原生安装RabbitMQ,然后安装插件。因为我们之前是基于Docker安原创 2022-06-01 20:22:12 · 4021 阅读 · 0 评论 -
服务异常通讯高级篇二(死信交换机、DelayExchange延迟队列插件)
当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter):如果这个包含死信的队列配置了属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,而这个交换机称为死信交换机(Dead Letter Exchange,查DLX)。如图,一个消息被消费者拒绝了,变成了死信:另外,队列将死信投递给死信交换机时,必须知道两个信息:这样才能确保投递的消息能到达死信交换机,并且正确的路由到死信队列。死信交换机总结什么样的消息会成为死信?死信交换机的使用场景是什么?一定要理解下图的处理方向,死原创 2022-06-01 17:22:14 · 445 阅读 · 0 评论 -
服务异步通讯高级篇一(消息可靠性)
消息队列在使用过程中,面临着很多实际问题需要思考:RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。返回结果有两种方式:说明:每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:修改publisher服务,添加一个:定义ConfirmCallbackConfirmCallback可以在发送消息时指定,因原创 2022-06-01 10:53:20 · 701 阅读 · 0 评论 -
SpringAMQP学习三(发布、订阅模型-Direct和Topic)
SpringAMQP学习三(发布、订阅模型-Direct和Topic)1、发布/订阅模型之Direct在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。在Direct模型下:队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key)消息的发送方在 向 Exchange发送消息时,也必须指定消息的 RoutingKey。Exchange不再把消息交给每一个原创 2022-05-31 17:10:51 · 454 阅读 · 0 评论 -
SpringAMQP学习二(Basic Queue 简单队列模型、Work Queue 工作队列模型、发布、订阅模型-Fanout)
SpringAMQP学习二(Basic Queue 简单队列模型、Work Queue 工作队列模型、发布、订阅模型-Fanout)SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。SpringAmqp的官方地址:https://spring.io/projects/spring-amqpSpringAMQP提供了三个功能:自动声明队列、交换机及其绑定关系基于注解的监听器模式,异步接收消息封装了RabbitTemp原创 2022-05-31 17:09:04 · 509 阅读 · 0 评论 -
RabbitMQ学习一(快速入门、详细图片版)
RabbitMQ学习一(快速入门)1、RabbitMQ的安装直接拉取dockerHub上的最新镜像docker pull rabbitmq创建rabbitMQ容器并运行1、可以通过如下命令查看运行的容器docker ps2、创建MQ容器docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management根据官网给出的示例修改如原创 2022-05-31 17:05:20 · 236 阅读 · 0 评论 -
初识MQ学习
初识MQ微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。1、同步通讯我们之前学习的Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题:总结:同步调用的优点:时效性较强,可以立即得到结果同步调用的问题:耦合度高性能和吞吐能力下降有额外的资源消耗有级联失败问题2、异步通讯异步调用则可以避免上述问题:我们以购买商品为例,用户支付后需要调用订单服务完成订单状态修改,调用物流服务,从仓库分配原创 2022-05-31 17:01:58 · 171 阅读 · 0 评论