![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
消息队列
文章平均质量分 65
消息队列实践场景实践经验和心得
star++
致力于研究Apache开源项目
展开
-
消息队列-kafka提交offset问题
说明:转载本人掘金文章概述offset是相对Consumer来说的,offset是用来帮助记录某个主题某个分区的消费情况的。当你每提交一次offset,意味着向kafka汇报一次消费进度,对于提交offset所以又分为同步和异步提交同步和异步提交offset对比同步提交:1.每次处理完一条消息,然后调用consumer.commitSync()提交offset2.在调用consumer.commitSync()方法时候会堵塞住,严重影响消费者性能3.每次提交都会向__consumer_offs原创 2022-05-18 14:00:53 · 3648 阅读 · 4 评论 -
消息队列-kafka关于CommitFailedException问题
说明:转载本人掘金文章概述提交offset失败这个异常也是我们开发中常见的异常,那么这个异常是怎么引起的呢?只要我们明白原因,那么就能避免,特别是在异步提交情况下(offset丢失),导致重复消费,消息一直卡在最后一批,导致业务数据受到严重的破坏。了解消费者实例机制1.kafka消费者都是按照批量消息拿过来消费的,因为发送也是批量的,这样可以提高kafka性能2.kafka中消费者有个参数max.poll.interval.ms(获取下一批消息间隔时间),如果上一批还没在这个事件之内处理完,那么k原创 2022-05-17 16:12:25 · 909 阅读 · 2 评论 -
消息队列-kafka消费异常问题
说明:转载本人掘金文章概述在kafka中,或者是说在任何消息队列中都有个消费顺序的问题。为了保证一个队列顺序消费,当当中一个消息消费异常时,必将影响后续队列消息的消费,这样业务岂不是卡住了。比如笔者举个最简单的例子:我发送1-100的消息,在我的处理逻辑当中 msg%5==0我就进行 int i=1/0操作,这必将抛异常,一直阻塞在msg=5上,后面6-100无法消费。下面笔者给出解决方案。重试一定次数(消息丢失)@KafkaHandler @KafkaListener(topics = {原创 2022-05-17 16:11:26 · 1857 阅读 · 0 评论 -
消息队列-kafka如何处理消息堆积问题
说明:转载本人掘金文章概述如何处理消息堆积问题? 这个问题也是经常面试被问到的问题。除此之外当然是有实际应用场景的。笔者在公司就碰到消息堆积问题,笔者公司是做流量监控防网络攻击的,因此需要对路由器所有流量进行处理和风险过滤,你可以想象一个公司的流量数据,公司员工只要在使用电脑就有进出流量,我们就要对每个请求进行处理。除此之外,我见过一些常见错误处理消息堆积问题的方式也分享给大家。增加分区同时增加消费实例kafka中一个消费组内的一个消费者线程只能对应一个主题内的一个分区进行消费,也就是说如果你单独增原创 2022-05-17 16:10:17 · 4668 阅读 · 0 评论 -
消息队列-kafka消息丢失问题
说明:转载本人掘金文章概述消息队列丢失消息是个经典的问题,也是我们在开发当中容易忽略的问题,最重要是面试当中必考题。消息队列总体上分为三部分:生产者(Producer),消费者(Consumer),消息队列服务端(broker)。不幸的是在使用不当情况下,三个环节都有可能丢失消息,今天我们就来讨论下为什么会丢消息,以及丢消息的解决方案。producer丢失消息问题Producer的作用是向Broker发送消息的。例如在这样一个场景: Producer已经向Broker发送了一条消息,在消息传输到Br原创 2022-05-17 16:09:26 · 571 阅读 · 0 评论 -
kafka就多方面理论实践总结
说明:转载本人掘金文章 https://juejin.cn/post/7094074279477641246分区立论实践总结理论1.从架构上来说,分区可以达到系统伸缩的目的。增加节点,增加分区,提高整个系统的生产,消费,服务端吞吐量。2.每个分区都是一个消息集合,都是有顺序的。3.消息决定放入哪个分区,可以自己去选择相应的分区策略或者自定义一些自己的分区策略。kafka自带了三种分区策略,分别是:轮询,随机,key有序(key的hash一致特性),默认是轮询,适合大部分场景。实践1.业务中有需原创 2022-05-17 15:45:05 · 271 阅读 · 0 评论 -
消息队列模型
概述消息队列一般无外乎存在两种模型(队列模型和发布订阅模型)RabbitMq模型说明:1.RabbitMq是典型的队列模型2. RabbitMq也可以实现发布订阅模型,就是利用exchange路由到多个队列实现3. RabbitMq为了实现发布订阅模型,需要复制多分数据和多个队列,资源消耗比较多·4. RabbitMq实现了AMQP协议5. RabbitMq每个队列消息是单独的,消息是有序的KafkaMq模型说明:1.KafkaMq模型是典型的发布订阅模型2.KafkaMq模型实原创 2021-06-04 08:42:51 · 456 阅读 · 0 评论