rabbitmq
文章平均质量分 96
leo_messi94
这个作者很懒,什么都没留下…
展开
-
RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失
/依赖注入 rabbitTemplate 之后再设置它的回调对象 // 此注解会在其他注解执行完成后再执行,所以rabbitTemplate先注入,再执行此初始化方法 @PostConstruct public void init() {// 设置rabbitTemplate的ConfirmCallBack为我们重写后的类 rabbitTemplate . setConfirmCallback(this);} /*** 交换机不管是否收到消息都会执行的一个回调方法。原创 2023-04-10 15:47:50 · 3409 阅读 · 0 评论 -
RabbitMq(六) -- 优先级队列及惰性队列
1. 幂等性用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等.1.1 消息重复消费消费者在消费 MQ 中的消息时,MQ原创 2022-03-07 00:12:52 · 501 阅读 · 0 评论 -
RabbitMq(五) -- 死信队列和延迟队列及springboot中使用rabbitmq
1. 死信1.1 死信的概念先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,原创 2022-03-04 11:54:32 · 2902 阅读 · 2 评论 -
RabbitMq(四) -- 交换机(rabbitmq的工作模式)
1. 实现一个消息被消费2次一个消息经过交换机之后,可以被交换机分发给2个不同的队列,不同的队列的消息被各自的消费者消费。注意:一个队列中的消息只能被消费一次2. 什么是交换机?RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机 (exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息,原创 2022-03-02 18:22:29 · 3150 阅读 · 1 评论 -
RabbitMq(三) -- 发布确认(springboot中使用rabbitmq)
1. 含义:生产者发消息给mq,mq将消息持久化到磁盘上了,mq再告诉生产者我已经把消息持久化到磁盘上了,这时才能保证消息是没有丢失,稳稳地保存在了磁盘上。mq告诉生产者,我已经保存到磁盘了,这一步就叫发布确认。2. 发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID (从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者 (包含消息的唯一 ID),这就使得生产者知道原创 2022-03-02 17:56:20 · 1659 阅读 · 0 评论 -
RabbitMq(二) -- 消息分发、应答与持久化
1. 模拟生产者消费者1在下图中,“P” 是生产者,“ C” 是消费者。中间的框是一个队列 RabbitMQ 代表使用者保留的消息缓冲区1.1加入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>1.2编写生产者代码注原创 2022-03-02 00:59:25 · 1245 阅读 · 0 评论 -
RabbitMq(一) -- 概论、安装与简单使用
1. 什么是MQMQ (message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游 “逻辑解耦 + 物理解耦” 的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务2. 为什么要用MQ2.1 流量削峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能原创 2022-02-28 16:13:21 · 266 阅读 · 0 评论