摘要: 一、说明 分为两种,一种是直接发消息,client内部有选择queue的算法,不允许外界改变。还有一种是可以自定义queue的选择算法(内置了三种算法,不喜欢的话可以自定义算法实现)。 public class org.apache.rocketmq.client.producer.DefaultM 阅读全文
posted @ 2020-10-16 16:04 苏先生139 阅读(2117) 评论(0) 推荐(0) 编辑
摘要: 一、问题复现 1、描述 两个一样的Consumer Group的Consumer订阅同一个Topic,但是是不同的tag,Consumer1订阅Topic的tag1,Consumer2订阅Topic的tag2,然后分别启动。这时候往Topic的tag1里发送10条数据,Topic的tag2里发送10 阅读全文
posted @ 2020-10-16 15:51 苏先生139 阅读(2916) 评论(3) 推荐(1) 编辑
摘要: 一、问题描述 RocketMQ的Consumer是如何做的负载均衡?比如:5个Consumer进程同时消费一个Topic,这个Topic只有4个queue会出现啥情况?反之Consumer数量小于queue的数据是啥情况? 二、源码剖析 1、RebalancePushImpl public clas 阅读全文
posted @ 2020-10-16 15:35 苏先生139 阅读(2094) 评论(0) 推荐(1) 编辑
摘要: 一、环境准备 1、补充 如果单机都不会安装网站 https://blog.csdn.net/ctwctw/article/details/107143968 再次强调,如果单机都不会的话,先抽出2min看看上面文章,因为需要改jvm配置的,默认8G,没那么大的内存启动会报错的。 2、机器 机器用途 阅读全文
posted @ 2020-10-16 15:29 苏先生139 阅读(879) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要集群 单点存在单点故障问题 集群可以分担压力,提高QPS 主从可以保证消息可靠性,比如只有M没S。M磁盘坏了,那未被消费的消息都丢了。而S可以作为备份。 二、单M模式 1、特点 只有一个Master节点,所以单点故障是致命缺点。 优点:配置简单,方便部署。 缺点:单点故障,一旦Broke 阅读全文
posted @ 2020-10-16 15:14 苏先生139 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失。 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。 自定义事务管理器 @Configuration public c 阅读全文
posted @ 2020-10-16 11:13 苏先生139 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 单例模式在程序设计中非常的常见,一般来说,某些类,我们希望在程序运行期间有且只有一个实例,原因可能是该类的创建需要消耗系统过多的资源、花费很多的时间,或者业务上客观就要求了只能有一个实例。 一个场景就是:我们的应用程序有一些配置文件,我们希望只在系统启动的时候读取这些配置文件,并将这些配置保存在内存 阅读全文
posted @ 2020-10-16 11:06 苏先生139 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 命令模式的定义与特点 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。命令模式的主要优点如下。 通过引入中间件(抽象接口)降低系统的耦合度。 扩展性良好,增加 阅读全文
posted @ 2020-10-16 10:50 苏先生139 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 既然使用在项目中使用了MQ,那么就不可避免的需要考虑消息丢失问题。在一些涉及到了金钱交易的场景下,消息丢失还是很致命的。那么在RocketMQ中存在哪几种消息丢失的场景呢? 先来一张最简单的消费流程图: 上图中大致包含了这么几种场景: 生产者产生消息发送给RocketMQ RocketMQ接收到了消 阅读全文
posted @ 2020-10-16 10:34 苏先生139 阅读(1492) 评论(0) 推荐(0) 编辑
摘要: 核心概念 在使用Sharding-JDBC之前,一定是先理解清楚下面几个核心概念。 逻辑表 水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。 真实表 在分片的数据库中真实存在的物 阅读全文
posted @ 2020-10-16 09:42 苏先生139 阅读(209) 评论(0) 推荐(0) 编辑