
队列
文章平均质量分 54
乐乐Java路漫漫
热衷于互联网JAVA开发,对新技术的探索孜孜不倦,对问题的研究废寝忘食,希望大家一起探索
展开
-
rocketmq部署-保证消息不丢失的实操
1.我们都知道要保证消息不丢失需要从以下三个方面去保证1)保证发送端必须发送成功,最好是broker端给了ack之后才表示发送成功,不然就需要重试发送。2)保证broker端保存成功,一方面是master节点持久化成功,另一方面是follower节点也要持久化成功,不然master节点挂了消息就丢失了3)保证消费者短消费成功,如果消费者刚接收到消息还没进行业务处理就挂了,然后broker就认为消息成功消费了,那么消息也丢失了。rocketmq部署操作https://github.com/apa原创 2021-09-03 10:01:50 · 563 阅读 · 0 评论 -
shardingjdbc源码之结果合并
1.首先入口是这行代码result = new ShardingResultSet(resultSets, new MergeEngine(resultSets, (SelectStatement) routeResult.getSqlStatement()).merge());org.apache.shardingsphere.core.merge.dql.DQLMergeEngine#merge 方法如下所示@Override public MergedResult merge() th原创 2021-08-24 17:36:30 · 511 阅读 · 0 评论 -
kafka命令及启动
先启动zookeeper,默认自带的bin/zookeeper-server-start.sh config/zookeeper.properties然后启动kafka服务bin/kafka-server-start.sh config/server.properties列举拥有哪些topicsbin/kafka-topics.sh --list --bootstrap-server localhost:9092在服务器上打开一个生产者,然后把输入的每行数据发送到kafka中的命令bin原创 2021-08-14 11:03:14 · 1172 阅读 · 0 评论 -
rocketmq事务消息
传统发送消息模式:先执行本地事务,成功之后,后发送消息给第三方,问题1.发送消息失败:第三方就没有收到消息,例如发送消息失败了(异常情况:mq宕机,网络异常),但是本地事务又成功了,就需要人工处理了。人工重发消息等传统发送消息的模式存在的问题是,无论你先发送消息再执行事务,还是先执行事务再发送消息,都存在问题。1.先发送消息,然后再执行事务,如果中间出现异常,事务执行失败,则出现了不一致2.先执行事务,再发送消息,如果中间出现异常,消息发送失败,也会导致不一致,因此:我们需要一个凭..原创 2021-07-21 17:23:43 · 393 阅读 · 0 评论 -
面试题:一个consumer订阅两个topic,其中一个topic消息过多堆积了,会影响另一个topic消费吗
问题:一个consumer订阅两个topic,其中一个topic消息过多堆积了,会影响另一个topic消费吗答案:不影响。为什么呢?因为rocketmq首先对消息进行负载均衡(rebalance),就是将topic中的队列按照consumer进行分配之后,将pullRequest(里面存放了topic,brokerName,queueId)放入到一个linkedBlockingQueue中,这个时候已经排好了后面消费的顺序。例如100个request中有大概50个是TopicTest1, 另外50个是原创 2021-07-15 11:28:49 · 2672 阅读 · 1 评论 -
Queue集合之PriorityBlockingQueue详解
集合系列文章文章目录集合系列文章前言1、PriorityBlockingQueue是什么?2、查看类图接口3.源码解析3.1 构造器3.2 offer操作3.2.1 扩容3.2.2 建堆算法3.2.3 图文解释3.3 poll操作3.3.1 dequeue出队源码3.3.2 siftDownComparable堆调整源码总结前言1、PriorityBlockingQueue是什么?集合中无界优先队列 priorityBlockingQueue内部使用堆算法保证每次出队都是优先级最高的元素,元素入原创 2021-01-05 16:58:09 · 3667 阅读 · 1 评论 -
kafka集群搭建和操作详解
1.kafka官网https://kafka.apache.org/2.下载地址wget https://mirror.bit.edu.cn/apache/kafka/2.7.0/kafka_2.12-2.7.0.tgz3.解压并复制三个kafkatar zxvf kafka_2.12-2.7.0.tgzcp -r kafka_2.12-2.7.0 kafka01cp -r kafka_2.12-2.7.0 kafka02cp -r kafka_2.12-2.7.0 kafka034.修原创 2020-12-27 14:58:46 · 499 阅读 · 0 评论 -
队列顺序消费例子
1.orderProducerpackage com.redis.example.demo.rocketmq.provider;import org.apache.rocketmq.client.producer.DefaultMQProducer;import org.apache.rocketmq.client.producer.MessageQueueSelector;import org.apache.rocketmq.client.producer.SendResult;import原创 2020-12-18 08:34:11 · 386 阅读 · 0 评论 -
【rocketmq系列】第三篇消息过滤机制
本文主要阐述 ClassFilter过滤机制实现。文章目录一、ClassFilter 消息过滤机制 FilterServer详解2.1 ClassFilter模式 消息过滤类注册机制DefaultMQPushConsumerImpl#subscribeMQClientInstance#sendHeartbeatToAllBrokerWithLock重点关注MQClientInstance#uploadFilterClassSource方法继续进入MQClientInstance#uploadFilter转载 2020-12-10 17:55:05 · 610 阅读 · 0 评论 -
Apache Kafka: bootstrap-server is not a recognized option
我执行的语句bin/kafka-console-producer.sh --bootstrap-server 10.0.0.11:9092 --topic test但是报错了原因是版本不支持It's not until Kafka 2.5.0, console producer accepts --bootstrap-server, before this version, use --broker-list在2.5.0版本之前只支持 --broker-list在2.5.0版本之后支持 --bo原创 2020-05-20 07:23:52 · 9090 阅读 · 1 评论 -
kafka,activeMq,rabbitmq,rocketMq都有什么区别,以及适合那些场景
问题:为什么使用消息队列消息队列有什么优点和缺点kafka,activeMq,rabbitmq,rocketMq都有什么区别,以及适合那些场景优点:结偶,并发削峰,异步缺点:可用性降低,系统复杂性变高,重复消费:系统发了两条,两条都插入了数据库消息丢失:系统根本没法请求到目标系统一致性问题:系统要再ABC三个系统都执行成功之后才返回成功,结果AB成功了,C失败了mq的6种工作...原创 2020-04-11 11:26:03 · 715 阅读 · 0 评论 -
redis作为消息队列的研究
1.Redis自带的PUB/SUB机制,即发布-订阅模式(推模型)。这种模式生产者(producer)和消费者(consumer)是1-M的关系,即一条消息会被多个消费者消费,当只有一个消费者时即可以看做一个1-1的消息队列,但这种方式并不适合题主的场景。首先,数据可靠性无法保障,题主的数据最终需要落库,如果消息丢失、Redis宕机部分数据没有持久化甚至突然的网络抖动都可能带来数据的丢失,应该是无...原创 2018-04-08 11:42:09 · 1925 阅读 · 0 评论 -
rocketmq使用详情
1.下载rocketmq:rocketmq下载地址2.解压 unzip rocketmq-all-4.7.1-bin-release.zip3.启动mqnamesrvcd rocketmq-all-4.7.1-bin-release启动namesrvbin/mqnamesrvJava HotSpot™ 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated a原创 2020-09-15 22:21:08 · 249 阅读 · 0 评论 -
rocketmq系列第二篇【消息消费源码解析】
消息消费的原理对于我们理解消息队列的运行十分有帮助,今天我们来了解rocketmq的push模式消费。1.消费入口PushConsumerimport java.util.List;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;import org.apach原创 2020-11-23 11:13:55 · 422 阅读 · 0 评论 -
rocketmq系列第一篇【发送源码解析】
1.发送消息入口:2.com.alibaba.rocketmq.client.producer.DefaultMQProducer#send(com.alibaba.rocketmq.common.message.Message)3.com.alibaba.rocketmq.client.impl.producer.DefaultMQProducerImpl#sendDefaultImpl4.发送消息核心代码5.获取topic信息6.根据一定的算法选择消息队列,默认是随机递增取模算法,还可以选择h原创 2020-09-20 12:33:37 · 316 阅读 · 0 评论 -
ArrayBlockingQueue和LinkedBlockingQueue的区别
本篇文章首先对阻塞队列中最常用的两个队列ArrayBlockingQueue、LinkedBlockingQueue做一个大致介绍,接着介绍使用阻塞队列实现生产者-消费者模式。ArrayBlockingQueueArrayBlockingQueue是接口BlockingQueue的阻塞实现队列之一。基于数组实现的一个阻塞队列,在创建对象时必须制定容量大小。并且可以指定公平性与非公平性,默...原创 2020-04-26 17:27:34 · 4193 阅读 · 2 评论