消息队列
文章平均质量分 76
豆奶快攻
这个作者很懒,什么都没留下…
展开
-
如何保证Kafka不丢失消息
丢失消息有 3 种不同的情况,针对每一种情况有不同的解决方案。原创 2024-01-15 11:43:18 · 1229 阅读 · 1 评论 -
kafka除了作为消息队列还能做什么?
与其之前的竞品不同,Kafka 不仅仅是一个消息队列,它还是一个适用于各种情况的开源事件流平台。Kafka 传输原始点击流数据,Flink 对其进行处理,而模型训练则消耗数据湖中的汇总数据。不同的是,指标是结构化数据,而日志是非结构化文本。例如,在下图中,事务日志被发送到 Kafka,并被 ElasticSearch、Redis 和二级数据库摄取。如上图所示,为了升级订单服务,我们更新了旧订单服务,以便从 Kafka 中消费输入,并将结果写入 ORDER Topic。如果它们完全相同,新服务就会通过测试。原创 2024-01-11 15:12:17 · 745 阅读 · 0 评论 -
一个注解优雅的实现接口幂等性
简单来说,就是对一个接口执行重复的多次请求,与一次请求所产生的结果是相同的,听起来非常容易理解,但要真正的在系统中要始终保持这个目标,是需要很严谨的设计的,在实际的生产环境下,我们应该保证任何接口都是幂等的,而如何正确的实现幂等,就是本文要讨论的内容。比如,先请求了一次删除A的操作,但由于响应超时,又自动请求了一次删除A的操作,如果在两次请求之间,又插入了一次A,而实际上新插入的这一次A,是不应该被删除的,这就是ABA问题,不过,在大多数业务场景中,ABA问题都是可以忽略的。这样的更新就非幂等了。原创 2023-12-19 10:27:42 · 104 阅读 · 0 评论 -
springboot + rabbitmq 消息确认机制
这次我分享的是springboot+rabbitmq如何实现消息确认机制,以及在实际开发中的一点踩坑经验,其实整体的内容比较简单,有时候事情就是这么神奇,越是简单的东西就越容易出错。可以看到使用了RabbitMQ以后,我们的业务链路明显变长了,虽然做到了系统间的解耦,但可能造成消息丢失的场景也增加了。例如: 消息生产者 - > rabbitmq服务器(消息发送失败) rabbitmq服务器自身故障导致消息丢失 消息消费者 - > rabbitmq服务(消...原创 2020-07-10 14:25:38 · 7893 阅读 · 6 评论 -
RabbitMQ 消费端限流、TTL、死信队列
消费端限流1. 为什么要对消费端限流假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!当数据量特别大的时候,我们对生产端限流肯定是不科学的,因为有时候并发量就是特别大,有时候并发量又特别少,我们无法约束生产端,这是用户的行为。所以我们应该对消费端限流,用于保持消费端的稳定,当消息数量激增的时候很有可能造成资源耗尽,以及影响服务的性能,...原创 2020-06-22 17:08:26 · 339 阅读 · 0 评论 -
RabbitMQ实战-消息交换机(exchange)
交换机是用来发送消息的AMQP实体。交换机拿到一个消息之后将它路由给零个或多个队列。它使用哪种路由算法是由交换机类型和被称作绑定(bindings)的规则所决定的。交换机可以有两个状态:持久(durable)、暂存(transient)。持久化的交换机会在消息代理(broker)重启后依旧存在,而暂存的交换机则不会(他们需要在代理启动后重新被声明)。然而并不是所有的应用场景都需要持久化的交换机...转载 2018-11-05 13:37:56 · 651 阅读 · 0 评论 -
RabbitMQ实战-什么是RabbitMQ
MQ首先我们说下MQ,MQ全称为Message Queue,即消息队列,是一种应用程序对应用程序的通信方法。其特点就是一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。AMQPAMQP(高级消息队列协议)是一个网络协议。它支持符合要求的客户端应用(application)和消息中间件代理(broker)之间进行通信。消息代理(message brokers)从发布者...转载 2018-11-05 13:10:30 · 143 阅读 · 0 评论 -
RabbitMQ实战-队列(queue)
队列在声明(declare)后才能被使用。如果一个队列尚不存在,声明一个队列会创建它。如果声明的队列已经存在,并且属性完全相同,那么此次声明不会对原有队列产生任何影响。如果声明中的属性与已存队列的属性存在差异,那么一个错误代码为406的通道级异常就会被抛出。队列的属性队列中存储着即将被消费掉的信息,它有如下属性:1、名称2、持久性(消息代理重启后,队列依旧存在)3、独享(只被一个连接...转载 2018-11-05 13:55:31 · 4473 阅读 · 0 评论 -
RabbitMQ实战-在服务中配置RabbitMQ实现消息发送
在这里以订单服务为消息生产者,代码中都有详细的注释和说明,以下是示例:添加依赖首先,创建一个web工程(在这里我使用springboot2.0.2)。加入rabbitMQ所需要的依赖: <!-- rabbitmq依赖 --> <dependency> <groupId>org.springframe...原创 2018-11-05 15:51:39 · 980 阅读 · 0 评论 -
RabbitMQ实战-在服务中配置RabbitMQ实现消息接收
上节介绍了如何实现消息的发送,这节我们接着上节说说如何实现消息的接收。添加依赖,进行配置同样的,消息消费者也需要添加RabbitMQ的依赖,配置连接信息。因为在上一节已经说过了,这里过于依赖和连接信息的配置就不在赘述了。订阅消息新建一个OrderConsumer,用于订阅和消费消息package com.space.rbq.store.consumer; import co...转载 2018-11-05 17:12:04 · 1044 阅读 · 0 评论 -
【消息队列 MQ 专栏】RabbitMQ
关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时候把这块的知识整理记录一下了。市面上的消息队列产品有很多,比如老牌的 ActiveMQ、RabbitMQ ,目前我看最火的 Kafka ,还有 ZeroMQ ,去年底阿里巴巴捐赠给 Apache 的 RocketMQ ,连 redis 这样的 NoSQL 数据库也支持 MQ 功能。...原创 2018-11-02 11:01:18 · 270 阅读 · 0 评论 -
RabbitMQ实战-消息确认机制之消息的正确消费
上节中我们讲了如何确保消息的准确发布,今天我们来看看如何确保消息的正确消费。在之前的基础上我们对消费者(仓库服务)进行完善。修改配置文件application.yml消费者的ack方式默认是自动的,也就是说消息一旦被消费(无论是否处理成功),消息都会被确认,然后会从队列中删除。这就意味着当消息处理失败的时候,也会被从队列中删除,这绝对不是我们所期望的。我们希望当消息正确消费时,消息从队列...转载 2018-11-06 10:12:03 · 6851 阅读 · 2 评论 -
分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题 消息的重复问题RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的?关键特性以及其实现原理一、顺序消息消息有序指的是可以按照消息的发...原创 2018-02-06 16:54:28 · 195 阅读 · 0 评论 -
RocketMQ联合创始人:选择MQ时,要注意的有哪些?
RocketMQ 是一个来自阿里巴巴的分布式消息中间件,于 2012 年开源,并在 2017 年正式成为 Apache 顶级项目。据了解,包括阿里云上的消息产品以及收购的子公司在内,阿里集团的消息产品全线都运行在 RocketMQ 之上,并且最近几年的双十一大促中,RocketMQ 都有抢眼表现。谈起消息系统中间件,就开源项目而言,用户的选择其实很多,包括 ActiveMQ、ZeroMQ、Kafk...原创 2018-04-13 16:12:56 · 1506 阅读 · 0 评论 -
如何看待消息中间件的选型
前言近来有很多网友留言:公司要做消息中间件选型,该如何选?你哪个比较好?我的回答一般是:It's a nice topic~如果随意回答一个的话显得很不严谨也不太负责任,如果严谨的回答的话一天就不用干活了。消息选型的确是一个大论题,实则说来话长的事情又如何长话短说。被问的越多越觉得需要整理一篇自己的观点出来,主要的目的将自己的经验分享出来,可以让别人少踩点误区,次要的目的是下次再被问到了可以直接甩...原创 2018-04-13 18:02:15 · 167 阅读 · 0 评论 -
消息中间件选型分析
消息中间件选型分析 ——从Kafka与RabbitMQ的对比来看全局有很多网友留言:公司要做消息中间件选型,该如何选?你觉得哪个比较好?消息选型的确是一个大论题,实则说来话长的事情又如何长话短说。对此笔者专门撰稿一篇内功心法:《如何看待消息中间件的选型》,不过这篇只表其意未表其行,为了弥补这种缺陷,笔者最近特意重新撰稿一篇,以供参考。温馨提示:本文一万多字,建议先马(关注)后看。一、前言消息...原创 2018-04-13 18:04:40 · 513 阅读 · 0 评论 -
消息队列之 RocketMQ
简介RocketMQ 特点RocketMQ 是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于2017年9月25日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。其主要特点有:灵活可扩展性RocketMQ 天然支持集群,其核...原创 2018-06-15 10:42:34 · 3669 阅读 · 0 评论 -
Spring Boot中使用RabbitMQ
Message Broker与AMQP简介Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景: 消息路由到一个或多个目的地 消息转化为其他的表现方式 执行消息的聚集、消息的分解,并将结果发送到他们的目的地,然后重新组合相应返回给消息用户 调用Web服务来检索数据 响应事件或错误 使用发布-订...原创 2018-10-31 16:46:16 · 204 阅读 · 0 评论 -
RabbitMQ实战-消息持久化
在前面的第七和第八节我们讲解了如何实现消息的发布和订阅。同时也提到了一些问题,比如说如果RabbitMQ服务挂掉了,那么我们的消息也就丢失了。怎么解决这样的问题呢?这就需要我们将消息进行持久化啦这节,我们就在原有的基础上来讲解消息的持久化如何持久化其实,在之前我们已经将消息进行了持久化。只是我们并没有去关注。简单说说消息发布订阅的流程:生产者将消息发送到消息交换机,交换机根据一定...转载 2018-11-06 09:14:21 · 5230 阅读 · 0 评论 -
RabbitMQ实战-消息确认机制之消息的准确发布
上节讲了消息的持久化,是为了防止在RabbitMQ服务挂掉的情况下消息丢失。在实际的生产中,我们也可能会遇到这样的情况:比如由于网络原因我们的消息并没有发送到消息交换机或者路由到队列,再或者消费者接受到消息后处理消息失败。那么,如何保证消息的正确传递以及消费就是我们需要关注的问题。这节,我们就来讲解消息确认机制一 :消息的准确发布消息发布是基于生产者的,所以我们需要在order服务中进行一...转载 2018-11-06 09:50:29 · 4487 阅读 · 2 评论 -
消息队列的作用
过去几年中,我们一直在使用、构建和宣传消息队列,我们认为它们是很令人敬畏的,这也不是什么秘密。我们相信对任何架构或应用来说,消息队列都是一个至关重要的组件,下面是十个理由:1. 解耦在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵原创 2016-12-02 16:43:44 · 3617 阅读 · 0 评论