随笔分类 -  RabbitMQ

摘要:如何保证消息不被重复消费? 或者说,如何保证消息消费的幂等性? 业务场景 在本项目中,新增员工接口,会有邮件发送,在测试接口的过程中,我们可能会有重复增加的操作,相对应的消费者端会收到两个邮件。 但是我们的用户已经收到了入职邮件。 显然这种情况,我们在生产中是不希望发生的。(会被员工在背后骂的,这S 阅读全文
posted @ 2022-04-15 17:12 BearBrick0 阅读(406) 评论(0) 推荐(0) 编辑
摘要:如何保证消息的可靠性的投递 在本项目中,添加员工会发送入职邮件,利用RabbitMQ的队列发送入职邮件。这部分只是实现发送邮件的功能,RabbitMQ它有它的优点就是异步、解耦、流量削峰。RabbitMQ在我们的邮件发送中扮演的角色,就相当于一个中转站。 就好比,我们平时的驿站,取快递的这个操作,大 阅读全文
posted @ 2022-04-15 10:36 BearBrick0 阅读(85) 评论(0) 推荐(0) 编辑
摘要:在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何 阅读全文
posted @ 2022-02-06 20:12 BearBrick0 阅读(32) 评论(0) 推荐(0) 编辑
摘要:延迟队列也是死信队列的一种,也就是当消息TTL过期,对应的一种情况。 概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。 应用场景 订单在十分钟之内未支付则自 阅读全文
posted @ 2022-02-06 09:11 BearBrick0 阅读(99) 评论(0) 推荐(0) 编辑
摘要:死信队列 概念 推荐阅读1 推荐阅读2 推荐阅读3 死信队列全称 Dead-Letter-Exchange 简称 DLX 是 RabbitMQ 中交换器的一种类型,消息在一段时间之后没有被消费就会变成死信被重新 publish 到另一个 DLX 交换器队列中,因此称为死信队列。死信队列用于处理无法被 阅读全文
posted @ 2022-02-05 15:32 BearBrick0 阅读(41) 评论(0) 推荐(0) 编辑
摘要:Publish/Subscribe 临时队列 每当我们连接到 Rabbit 时,我们都需要一个全新的空队列,为此我们可以创建一个具有随机名称的队列**,或者能让服务器为我们选择一个随机队列名称那就更好了。其次一旦我们断开了消费者的连接,队列将被自动删除。** 创建临时队列的方式如下: String 阅读全文
posted @ 2022-01-31 02:59 BearBrick0 阅读(36) 评论(0) 推荐(0) 编辑
摘要:Work Queues 工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。 轮训发送消息 启动两个线程 阅读全文
posted @ 2022-01-24 01:33 BearBrick0 阅读(47) 评论(0) 推荐(0) 编辑
摘要:Hello World 生产者 package com.uin; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFacto 阅读全文
posted @ 2022-01-24 00:15 BearBrick0 阅读(24) 评论(0) 推荐(0) 编辑
摘要:消息队列 一、MQ的相关概念 1. 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通 阅读全文
posted @ 2022-01-23 19:15 BearBrick0 阅读(33) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩