rocketmq学习】的更多相关文章

1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全局搜索9876,将所有使用9876端口的地方改为9877. 在终端打开,使用:mvn -Prelease-all -DskipTests clean install命令打包,打包完成后在项目的distribution\target将会有如下两个包: 分别是linux和win下运行的包. 将后缀为.t…
在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式. 同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式. 1. 集群消费模式 跟AciiveMQ一样,当存在多个消费者时,消息通过一定负载均衡策略,将消息分发到多个consumer中. 如图: 在RockeMQ中,通过ConsumeGroup的机制,实现了天然的消息负载均衡!通俗点来说,RocketMQ中的消息通过ConsumeGroup实现了将消息分发到C1/C2/C3/……的…
1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败. 这种消息失败重试我们可以手动设置发送失败重试的次数. Consumer端重试: Consumer消费消息失败后,要提供一种重试机制,令消息再消费一次,Consumer消费消息失败通常可以认为有以下几种情况 1. 由于消息本身的原因,例如反序列化失败,消息数据本身无法处理(例如话费充值,当前消息的手机被注销,无法充值)等.这种错误通常需要跳过这条消…
1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息. 只有以上两个条件都满足情况下,才能认为消息是“Exactly Only Once”,而要实现以上两点,在分布式系统环 境下,不可避免要产生巨大的开销.所以RocketMQ 为了追求高性能,并不保证此特性,要求在业务上进行去重,也就是说消费消息要做到幂等性.RocketMQ 虽然不能严格保证不重复,但是正常情况下很少会出现重复发送.消 费情况,只有网络异常,Con…
前面已经学习了RockeMQ的四种集群方式,接下来就来搭建一个双Master(2m)的集群环境. 1. 双Master服务器环境 序号 ip 用户名 密码 角色 模式 (1) 47.105.145.123 root nameServer1,brokerServer1 Master1 (2) 47.105.149.61 root   nameServer2,brokerServer2   Master2 2. 修改hosts环境 两台机器同时修改:vim /etc/hosts 重启网卡:servi…
1.消息队列介绍 消息队列本质上来说是一个符合先进先出原则的单向队列:一方发送消息并存入消息队列尾部(生产者投递消息),一方从消息队列的头部取出消息(消费者消费消息).但对于一个成熟可靠的消息队列来说,所需要解决的主要问题还包括:高效可靠的消息投递.存储:能承受高并发的流量冲击,可通过集群部署来解决单点故障等等. 由于消息队列具备了以上特点,因此在如今的微服务架构中能够作为一种中间件,提供许多重要的功能以解决微服务架构中的诸多痛点: 1.应用解耦 微服务架构中,存在着众多子系统,共同完成对外部用…
产品选型 我们在进行中间件选型时,一般都是通过下面几点来进行产品选型的: 1.性能 2.功能支持程度 3.开发语言(团队中是否有成员熟悉此中间件的开发语言,市场上此种语言的开发人员是否好招) 4.有多少公司已经在生产环境上实际使用过,使用的效果如何 5.社区的支持力度如何 6.中间件的学习程度是否简单.文档是否详尽 7.稳定性 8.集群功能是否完备 ... 如果从以上8点来选型一个消息队列,作为一名熟悉java的程序员,当遇到重新选择消息队列的场景时,我会毫不犹豫的选型rocketmq,rock…
1.rocketmq图形化控制台安装 虽然rocketmq为用户提供了使用命令行管理主题.消费组以及broker配置的功能,但对于不够熟练的非运维人员来说,命令行的管理界面还是较难使用的.为此,我们可以使用图形化的管理界面来简化管理操作. rocketmq官方推荐的图形化控制台目前还处在不成熟的孵化阶段.仓库地址为(https://github.com/apache/rocketmq-externals),其中包含了rocketmq相关拓展的.属于孵化期的各种项目.下载源码之后,找到rocket…
RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力 RocketMQ网络部署 1.NameServer是一个几乎无状态的节点,可集群部署,一般用zookeeper实现,用于管理分布式Topic信息 NameServer维护信息示例:rocketMQ/brokers/myserverrocketMQ/topics/epftopic4wolfrocket…
RocketMq是支持Topic模式的MQ中间件,它的传输格式为topic(主题,一个product对应一个主题,),Tag(标签,其实就是副标题,是为了更好的支持集群模式而出现的,这样客户端可以指定所要接收的标签,划分更加细腻),key(键,一条消息对应一个键),body(要发送的具体内容,要转换为byte数组); RocketMq支持,同步发送和异步发送两种机制,同步发送也就是在生产方向broker发送消息后,要等broker返回响应,这样才能继续发送下一个消息; 异步发送指的则是生产方向b…
官网:http://rocketmq.apache.org 1.环境搭建 准备: rocketmq-all-4.3.0-bin-release.zip 必须配置:JAVA_HOME=/home/rui/jdk1.8.0_172 1 unzip rocketmq-all-4.3.0-bin-release.zip -d /home/rui/ 2 3 cd /home/rui/ 4 5 mv rocketmq-all-4.3.0-bin-release/ rocketmq-4.3.0 6 7 vim…
最近因为工作需求,领导让我安装一下RocketMQ 这里简单记录一下 这里我的操作系统是centos 6.5 64位 我们看一下官网的RocketMQ安装要求 Prerequisite The following softwares are assumed installed: ()64bit OS, Linux/Unix/Mac is recommended; ()64bit JDK 1.7+; ()Maven 3.2.x ()Git 所以这里我按照官网的要求 [root@--- ~]# ca…
官网地址 安装name server和broker git clone https://github.com/apache/incubator-rocketmq.git cd incubator-rocketmq mvn clean package install -Prelease-all assembly:assembly -U 然后target目录下的apache-rocketmq-all就是我们需要的 把apache-rocketmq-all抽出来,移到apache-rocketmq-a…
学而时习之,不亦说乎! 自己搭建个学习用的RocketMQ总是很麻烦,需要虚拟机环境,网络,需要安装rocketmq,启动.时间久了再去看,又不知道这个虚拟机是干嘛的了. 直接在eclipse中启动,简单省事,用的时候启动,用完关掉就行了. 先看下图,给还没开始的你一点信心. RocketMQ 官网:http://rocketmq.apache.org/ 源码:https://github.com/apache/rocketmq github:https://github.com/apache/…
消息队列的流派 什么是 MQ Message Queue(MQ),消息队列中间件.很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的,但是这个只是 MQ 的效果而不是目的.MQ 真正的目的是为了通讯,屏蔽底层复杂的通讯协议,定义了一套应用层的.更加简单的通讯协议.一个分布式系统中两个模块之间通讯要么是 HTTP,要么是自己开发的 TCP,但是这两种协议其实都是原始的协议.HTTP 协议很难实现两端通讯——模块 A 可以调用 B,…
1. PushConsumer 推,Broker主动向Consumer推消息,它Consumer的一种,应用通常向对象注册一个Listener接口,一旦接收到消息,Consumer对象立刻回调Linstener接口方法.Push方式里,consumer把轮询过程封装了,并注册MessageListener监听器,取到消息后,唤醒MessageListener的consumeMessage()来消费,对用户而言,感觉消息是被推送过来的. 缺点: 慢消费无疑是Push模式最大的致命伤,如果消费者的速…
1. 事务消息原理图 RocketMQ除了支持普通消息,顺序消息之外,还支持了事务消息. 1. 什么是分布式事务? 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败.本质上来说,分布式事务就是为了保证不同数据库的数据一致性. 2. RocketMQ中分布式事务的…
1. 顺序消息原理图 2. 什么是顺序消息? 消费消息的顺序要求同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,并且发送给到同一队列,这样Consumer就可以按照Producer发送的顺序去消费消息. 2.1 普通顺序消息 正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致. 如果业务能够容忍在集群异常(如某个Broker…
在RocketMQ中提供了三种发送消息的模式: 1.NormalProducer(普通) 2.OrderProducer(顺序) 3.TransactionProducer(事务) 下面来介绍一下producer中的各个API的使用: 1. producerGroup:Producer组名, 默认值为DEFAULT_PRODUCER,多个Producer如果属于一个应用,发送同样的消息,则应该将它们归为同一组. 2. createTopicKey: 默认值为TBW102,在发送消息时,自动创建服…
1. RocketMQ主要的9个模块,如图: 2. 模块介绍 1. rocketmq-common:通用的常量枚举,基类方法或者数据结构,按描述的目标来分包,通俗易懂.报名有admin,consumer,filter,hook,message等. 2. rocketmq-remoting:用Netty写的客户端和服务端,fastjson做的序列化,自定义二进制协议 3. rocketmq-sevutil: 只用一个ServerUtil类,类注解是,只提供Server程序依赖,目的是为了拆解客户端…
1.  添加依赖 pom.xml如下: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.3.1</version> </dependency> <dependency> <groupId>org.apache.rocketmq&l…
1. 下载rocketmq-console-ng 官网地址:https://github.com/apache/rocketmq-externals 拉下来之后,使用idea打开rocketmq-console,在application.properties配置文件中修改rocketmq.config.namesrvAddr(前面集群环境下的nameserver的ip:port),如下: rocketmq.config.namesrvAddr=rocketmq-nameserver1:9876;…
1. RocketMQ的物理结构 RecketMQ网络部署的特点: Name Server是一个几乎无状态特点,可集群部署,节点之间无任何信息同步的(相对于zookeeper是较为轻量级的). Broker部署相对比较复杂的,Broker分为Master和Slave,一个Master可以对应多个Slave,但是多个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerID来定义,BrokerId为o表示Master,非o表示S…
1. 什么是RocketMQ? 是一个队列模型的消息中间件,具有高性能.高可靠.高实时.分布式特点. Producer.Consumer.队列都可以分布式.  Producer 吐一些队列轮流収送消息,队列集合称为Topic,Consumer 如果做广播消费,则一个consumer 实例消费返个Topic 对应的所有队列,如果做集群消费,则多个Consumer 实例平均消费返个topic 对应的 队列集合. 能够保证严格的消息顺序 提供丰富的消息拉叏模式 高效的订阅者水平扩展能力 实时的消息订阅…
RocketMQ推荐了几种Broker集群方式,这里的Slave不可写,但可读,类似于Mysql主备方式 1. 单个Master 这是一种风险比较大的集群方式,因为一旦Borker重启或宕机期间,将会导致这个服务不可用,因此是不建议线上环境去使用的. 2. 多个Master 一个集群全部都是Master,没有Slave,它的优点和缺点如下: 优点:配置简单,单个Master宕机或者是重启维护对应用没有什么影响的,在磁盘配置为RAID10时,即使机器宕机不可恢复的情况下,消息也不会丢失(异步刷盘丢…
RocketMQ项目代码核心目录说明 broker:broker启动进程 client:消息客户端,包含消息生产者,消息消费者相关类 common:公共包 dev:开发者信息(非源代码) distribution:部署实例文件夹(非源代码,仅一些配置文件) example:RocketMQ示例代码 filter:消息过滤相关基础类 filtersrv:消息过滤服务实现相关类(filter启动进程) logappender:日志实现相关类 namesrv:NameServer实现相关类(NameS…
基本介绍 rocketmq是阿里巴巴团队使用java语言开发的一款基于发布订阅模型的分布式消息队列中间件,是一款低延迟,高可用,拥有海量消息堆积能力和灵活拓展性的消息队列. 特点 可以实现集群无单点故障问题,节点高可用,水平可扩展: 支持消息存储,写入低延迟,支持实时消息查询: 支持上万个消息队列,性能高; 提供消息失败重试机制,可靠性高: 开源社区活跃性高,经受过阿里双十一考验,具备较高成熟度. 基本组件 下图是rocketmq的物理部署架构: 从上图可以知道,rocketmq由四大核心模块组…
1 基本样例 在基本样例中我们提供如下的功能场景: 使用RocketMQ发送三种类型的消息:同步消息.异步消息和单向消息.其中前两种消息是可靠的,因为会有发送是否成功的应答. 使用RocketMQ来消费接收到的消息. 1.1 加入依赖: maven: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <ve…
由于消息的消费方式有两种,所以两种方式也有不同的API: 1. PushConsumer的配置 1. consumerGroup: 默认值为DEFAULT_CONSUMER,Consumer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组 2. messageModel: 消息模型,默认值为CLUSTERING,支持集群消费,广播消费两种模型 3. consumeFromWhere: 默认值为CONSUME_FROM_LAST_OFFSET,Co…
前言 继我上一篇博客后 分布式消息队列RocketMQ学习教程① 上一篇博客最主要介绍了几种常用的MQ,所以本博客再简单介绍一下RocketMQ的原理和简单的例子,基于Java实现,希望可以帮助学习者 RoketMQ搭建Linux版 "工于利其事,必先利其器",所以我们首先需要搭建好RocketMQ, 考虑到学习者不一定有Linux系统的服务器,所以本博客介绍一下Linux和Window系统的两种安装方法,以补充上一篇博客 因为阿里已经将RocketMQ捐给Apache了,所以现在我们…