
消息队列
文章平均质量分 94
luckilyil
本人在学习java中,学习java狠狠大赚一笔,快来关注我一起学习吧
展开
-
RabbitMQ学习—day8—RabbitMQ 其他知识点
当RabbitMQ需要释放内存的时候,会将内存中的消息换页至磁盘中,这个操作会耗费较长的时间,也会阻塞队列的操作,进而无法接收新的消息。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。Redis原子性(推荐)原创 2025-02-24 16:37:38 · 823 阅读 · 0 评论 -
RabbitMQ学习—day7—发布确认高级
在生产环境中由于一些不明原因,导致 rabbitmq重启,在RabbitMQ重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行RabbitMQ的消息可靠投递呢?原创 2025-02-24 15:35:02 · 899 阅读 · 0 评论 -
RabbitMQ学习—day6—springboot整合
前一小节我们介绍了死信队列,刚刚又介绍了 TTL,至此利用 RabbitMQ 实现延时队列的两大要素已经集齐,接下来只需要将它们进行融合,再加入一点点调味料,延时队列就可以新鲜出炉了。想想看,延时队列,不就是想要消息延迟多久被处理吗,TTL 则刚好能让消息在延迟多久之后成为死信,另一方面,成为死信的消息都会被投递到死信队列里,这样只需要消费者一直消费死信队列里的消息就完事了,因为里面的消息都是希望被立即处理的消息。原创 2025-02-23 21:25:34 · 1554 阅读 · 0 评论 -
RabbitMQ学习—day6—死信队列与延迟队列
1.1 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因。效果:先启动消费者01,让交换机和队列创建,再关闭消费者01,启动生产者,10条消息被传送到NORMAL_QUEUE,然后被传送到DEAD_QUEUE,此时启动消费者02,消息全被接收。生产者Producer取消过期时间。原创 2025-02-23 15:40:02 · 1173 阅读 · 0 评论 -
RabbitMQ学习—day5—交换机
介绍生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。原创 2025-02-23 12:11:26 · 1117 阅读 · 0 评论 -
RabbitMQ学习—day4—持久化与发布
单个确认发布方式非常慢,与单个等待确认消息相比,先发布一批消息然后一起确认可以极大地提高吞吐量,当然这种方式的缺点就是:当发生故障导致发布出现问题时,不知道是哪个消息出问题了,我们必须将整个批处理保存在内存中,以记录重要的信息而后重新发布消息。,因为如果没有确认发布的消息就会阻塞所有后续消息的发布,这种方式最多提供每秒不超过数百条发布消息的吞吐量。方法是浅拷贝,所以清除了缓存区,相当于清除了内容的地址,也就清除了队列的确认的消息。的方式,也就是发布一个消息之后只有它被确认发布,后续的消息才能继续发布,原创 2025-02-22 22:28:25 · 970 阅读 · 0 评论 -
RabbitMQ学习—day3—简单案例
一旦数量达到配置的数量, RabbitMQ 将停止在通道上传递更多消息,除非至少有一个未处理的消息被确认,例如,假设在通道上有未确认的消息 5、6、7,8,并且通道的预取计数设置为 4,此时RabbitMQ 将不会在该通道上再传递任何消息,除非至少有一个未应答的消息被 ack。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。预取值为 1 是最保守的。,当然这样有可能使得消费者这边由于接收太多还来不及处理的消息,导致这些消息的积压,最终使 得内存耗尽,最终这些消费者线程被操作系统杀死,原创 2025-02-22 16:04:59 · 785 阅读 · 0 评论 -
RabbitMQ学习—day2—安装
访问 http://(本机ip或服务器ip):15672 ,用默认账号密码(guest)登录,出现权限问题。官网:https://www.erlang-solutions.com/downloads/默认情况只能在 localhost 本机下访问,所以需要添加一个远程登录的用户。默认情况下,是没有安装web端的客户端插件,需要安装才可以生效。关闭应用的命令为:rabbitmqctl stop_app。如果网站无法访问的话,记得开端口的防火墙,服务器的安全组等。再次登录,用 admin 用户。原创 2025-02-10 11:56:22 · 1155 阅读 · 0 评论 -
RabbitMQ学习—day1—相关概念
MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务。Broker接收和分发消息的应用,RabbitMQ Server 就是 Message Broker。原创 2025-02-10 11:21:40 · 967 阅读 · 0 评论