RabbitMQ
文章平均质量分 89
在人间负债^
商务合作/毕设指导加微:vx18706579002。阿里、腾讯云等多个社区专家博主、创作之星。 会点前后端开发、测试、爬虫,喜欢分享,热爱写文章,享受解决BUG的快感。
展开
-
RabbitMQ ---- RabbitMQ 其他知识点
如果要通过声明的方式改变已有队列的模式的话,那么只能先删除队列,然后再重新声明一个新的。惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。消费者在消费 MQ 中的消息时,MQ 已把消息发送给消费者,消费者在给 MQ 返回 ack 时网络中断,故 MQ 未收到确认信息,该条消息会重新发给其他的消费者,或者在网络重连后再次发送给该消费者,但实际上该消费者已成功消费了该条消息,造成消费者消费了重复的消息。原创 2023-07-18 12:19:04 · 423 阅读 · 0 评论 -
RabbitMQ ---- 发布高级确认
在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?原创 2023-07-17 10:15:20 · 197 阅读 · 0 评论 -
RabbitMQ ---- 延迟队列
延时队列在需要延时处理的场景下非常有用,使用 RabbitMQ 来实现延时队列可以很好的利用 RabbitMQ 的特性,如:消息的可靠发送、消息的可靠投递、死信队列来保障消息至少被消费一次以及未被正确处理的消息不回被丢弃。另外,通过 RabbitMQ 集群的特性,可以很好的解决单点故障问题,不会因为单个节点挂掉导致延时队列不可用或者消息丢失。原创 2023-07-16 11:14:03 · 427 阅读 · 0 评论 -
RabbitMQ ---- 死信队列
死信,顾名思义就是无法被消费的消息,字面意思可以这样解释,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中.还有比如说: 用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。原创 2023-07-15 10:42:31 · 524 阅读 · 0 评论 -
RabbitMQ ---- 交换机
Fanout 这种类型非常简单。它接收到所有消息广播到它知道的所有队列中。系统中默认有些 exchange 类型上一节中的我们的日志系统将所有消息广播给所有消费者,对此我们想做一些改变,例如我们希望将日志消息写入磁盘的程序仅接收严重错误(errros),而不存储哪些警告(warning)或信息(info)日志消息避免浪费磁盘空间。原创 2023-07-14 18:31:22 · 721 阅读 · 0 评论 -
RabbitMQ ---- 发布确认
(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置 basic.ack 的 multiple 域,表示到这个序列号之前的所有消息都已经得到了处理。当然这种方案仍是同步的,也一样阻塞消息的发布。原创 2023-07-13 23:08:03 · 262 阅读 · 0 评论 -
RabbitMQ ---- Work Queues
一旦数量达到配置的数量,RabbitMQ 将停止在通道上传递更多消息,除非至少有一个未处理的消息被确认,例如,假设在通道上有未确认的消息 5、6、7,8,并且通道的预取计数设置为 4,此时 RabbitMQ 将不会在该通道上再传递任何消息,除非至少有一个未应答的消息被 ack。比方说 tag=6 这个消息刚刚被确认 ACK,RabbitMQ 将会感知这个情况到并再发送一条消息。消息应答和 QoS 预取值对用户吞吐量有重大影响。通常,增加预取将提高向消费者传递消息的速度。原创 2023-07-12 11:21:40 · 632 阅读 · 0 评论 -
RabbitMQ ---- Hello World
本节使用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。原创 2023-07-10 23:17:44 · 1044 阅读 · 0 评论 -
RabbitMQ ---- 消息队列
MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。接收和分发消息的应用,RabbitMQ Server 就是 Message Broker。原创 2023-07-09 16:01:16 · 2434 阅读 · 0 评论