mq
文章平均质量分 86
mq那点事
爱琴孩
扫盲+科普+解惑,愿天下程序员每天少掉头发
展开
-
一文彻底搞懂RabbitMQ
用的居多:一旦 channel 进入 confirm 模式,所有在该信道上发布的消息都将会被指派一个从1开始的唯一的ID,一旦消息被投递到所有匹配的队列之后,RabbitMQ 就会发送一个包含消息的唯一ID 的 ACK给生产者,这就使得生产者知道消息已经正确到达目的队列了,如果 RabbitMQ 没能处理该消息,则会发送一个 Nack (not acknowledged) 消息给你,你可以进行重试操作。如果同时配置了队列的 TTL 和消息的 TTL,那么较小的那个值将会被使用。当然这样会造成吞吐量下降。转载 2024-09-23 20:54:25 · 169 阅读 · 0 评论 -
RocketMQ为何会出现消息重复消费
总得来说,RocketMQ中还是存在很多种导致消息重读消费的情况,并且官方也说了,只是在大多数情况下消息不会重复。所以如果你的业务场景中需要保证消息不能重复消费,那么就需要根据业务场景合理的设计幂等技术方案。转载 2024-09-01 16:54:57 · 125 阅读 · 0 评论 -
RabbitMQ核心总结
RabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。server:又称broker,接受客户端连接,实现AMQP实体服务。connection:连接和具体broker网络连接。channel:网络信道,几乎所有操作都在channel中进行,channel是消息读写的通道。客户端可以建立多个channel,每个channel表示一个会话任务。message:消息,服务器和应用程序之间传递的数据,由properties和body组成。原创 2023-10-03 19:49:01 · 1421 阅读 · 0 评论 -
RocketMQ 消息积压了,增加消费者有用吗?
这种策略在消费者启动的时候可以指定消费哪些 MessageQueue。//绑定消费 messageQueue1。转载 2023-06-11 10:22:52 · 341 阅读 · 0 评论 -
RabbitMq和Kafka找不同(二)
1、消息时序(timing)在测定发送到一个队列的消息时间方面,RabbitMQ提供了多种能力:1)消息存活时间(TTL)发送到RabbitMQ的每条消息都可以关联一个TTL属性。发布者可以直接设置TTL或者根据队列的策略来设置。系统可以根据设置的TTL来限制消息的有效期。如果消费者在预期时间内没有处理该消息,那么这条消息会自动的从队列上被移除(并且会被移到死信交换器上,同时在这之后的消息都会这样处理)。TTL对于那些有时效性的命令特别有用,因为一段时间内没有处理的话,这些命令就没有什么意义了。转载 2021-09-21 15:22:29 · 95 阅读 · 0 评论 -
RabbitMQ和Kafka找不同(一)
RabbitMQ是一个消息代理,但是Apache Kafka是一个分布式流式系统。好像从语义上就可以看出差异,但是它们内部的一些特性会影响到我们是否能够很好的设计各种用例。例如,Kafka最适用于数据的流式处理,但是RabbitMQ对流式中的消息就很难保持它们的顺序。另一方面,RabbitMQ内置重试逻辑和死信(dead-letter)交换器,但是Kafka只是把这些实现逻辑交给用户来处理。这部分主要强调在不同系统之间它们的主要差异。1、消息顺序对于发送到队列或者交换器上的消息,RabbitMQ不保转载 2021-09-21 15:06:12 · 80 阅读 · 0 评论 -
RabbitMq和Kafka那点事
RabbitMqRabbitMQ作为消息中间件的一种实现,常常被当作一种服务总线来使用。RabbitMQ原生就支持消息队列入门提到的两种消息模式。其他一些流行的消息中间件的实现有ActiveMQ,ZeroMQ,Azure Service Bus以及Amazon Simple Queue Service(SQS)。这些消息中间件的实现有许多共通的地方,下面中提到的许多概念大部分都适用于这些中间件。1、队列RabbitMQ支持典型的开箱即用的消息队列。开发者可以定义一个命名队列,然后发布者可以向这个转载 2021-09-21 14:22:10 · 153 阅读 · 0 评论 -
消息队列入门
前言异步消息可以作为解耦消息的生产和处理的一种解决方案。提到消息系统,我们通常会想到两种主要的消息模式——消息队列和发布/订阅模式。1、消息队列利用消息队列可以解耦生产者和消费者。多个生产者可以向同一个消息队列发送消息;但是,一个消息在被一个消息者处理的时候,这个消息在队列上会被锁住或者被移除并且其他消费者无法处理该消息。也就是说一个具体的消息只能由一个消费者消费。需要额外注意的是,如果消费者处理一个消息失败了,消息系统一般会把这个消息放回队列,这样其他消费者可以继续处理。消息队列除了提转载 2021-09-21 10:05:01 · 120 阅读 · 0 评论 -
RabbitMq之延时队列
前言前面在RabbitMq之消息限流与延时队列(上)中,我们介绍了rabbitmq如何设置限流,这里再和大家一起看下rabbitmq如何实现延迟队列。TTL 消息/队列TTL 是 Time To Live 的缩写,也就是生存时间的意思,RabbitMQ 支持消息的过期时间,在消息发送时可以进行指定,也支持队列的过期时间,从消息入队列开始计算,只要超过了队列的超时时间配置,那么消息会自动的清除。设置队列的话就是整个队列的消息到时都会过期,设置消息的话就是单条消息到时自动过期。// TTL队列原创 2020-09-15 22:54:11 · 527 阅读 · 1 评论 -
RabbitMq之消息限流与延时队列(上)
前言消息队列限流是指在服务器面临巨额流量时,为了进行自保,进行的一种救急措施。因为巨大的流量代表着非常多的消息,这些消息如果多到服务器处理不过来就会造成服务器瘫痪,影响用户体验,造成不良影响。所以要进行一次降级操作,把处理不了的流量隔绝在系统之外,避免它们打垮系统。基本上任何一个消息队列都有限流的功能,今天我们就来看看在 RabbitMQ 之中进行限流具体应该怎么做?RabbitMQ如何限流RabbitMQ 提供了一种 QOS(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息还转载 2020-09-15 22:46:02 · 333 阅读 · 0 评论 -
RabbitMq如何保证消息可靠性
前言前面在深入浅出RabbitMQ中,我们大致介绍了下RabbitMq的一些基础概念,包括4中交换机模型。在实际企业应用中,我们往往需要需要考虑消息的可靠性。如果单纯的为了异步削峰,不考虑消息投递的可靠性,最终导致数据不一致,这肯定不是我们想要的。消息可能丢失的四个环节首先,我来看下消息在被生产到发送到MQ,再被路由到队列,紧接着被消费。其中大致流程如下图所示从图上我们大概可以看出来一个消息会经历四个节点,只有保证这四个节点的可靠性才能保证整个系统的可靠性。生产者发出后保证到达了MQ转载 2020-09-09 22:27:27 · 409 阅读 · 0 评论 -
深入浅出RabbitMQ
前言在一些大型项目中,我们经常会使用消息队列来实现解耦,削峰限流。如果对消息队列不是很清楚,可以参见消息队列那些事。消息队列产品也比较多,基于JMS的activemq,抑或是基于AMQP的RabbitMQ,还有阿里的RocketMQ和日志采集中经常使用的Kafka。这些产品都有自己的优劣势,具体使用哪种,需要根据项目实际场景具体分析。目前项目中用的是RabbitMQ,这里和大家一起学习下Rab...原创 2019-05-25 16:14:21 · 443 阅读 · 2 评论 -
消息队列那些事
什么是消息队列我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。我们知道队列是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。比如生产者发送消息1,2,3...对于消费者就会按照1,2,3...的顺序来消费。但是偶尔也会出现消息被消费...转载 2018-12-20 19:35:58 · 269 阅读 · 0 评论