rocketmq

windows配置rocketmq开发环境(idea-eclipse)

限于喜欢 提交于 2019-12-10 16:13:15
一、windows下配置jdk及Rocketmq环境变量: vim /root/.bashrc #在该文件添加一下内容 # Set RocketMQ Environment ROCKETMQ_HOME=/home/MyRocketMQ-bin # 此处为上述步骤中的maven编译后文件目录代码 ROCKETMQ_CLASSPATH=$ROCKETMQ_HOME/lib # 此处为rocketmq运行所依赖的jar的classpath ROCKETMQ_PATH=$ROCKETMQ_HOME/bin # 此处为rocketmq运行bin目录,加入到可执行命令 NAMESRV_ADDR=127.0.0.1:9876 # Set Java Environment JAVA_HOME=/usr/java/jdk1.7.0_79 JRE_HOME=/usr/java/jdk1.7.0_79/jre PATH=.:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ROCKETMQ_PATH # 此处将ROCKETMQ_PATH CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$ROCKETMQ_PATH 根据实际情况

RocketMQ安装教程

☆樱花仙子☆ 提交于 2019-12-10 13:45:15
RocketMQ安装 官网: quick-start 受众 本文档要求读者有一定的linux运维基础,从事Java开发为佳,了解mvn项目构建. 简介 RocketMQ 是由阿里用java语言开发的一款高性能、高吞吐量的分布式消息中间件,于2017年正式捐赠 Apache 基金会并成为顶级开源项目。 环境要求 官网的描述: The following softwares are assumed installed: 64bit OS, Linux/Unix/Mac is recommended; 64bit JDK 1.8+; Maven 3.2.x; Git; 4g+ free disk for Broker server 笔者的环境: ubuntu-14.04.6-server-amd64 java version 1.8.0_141 一、RocketMQ安装 安装必要软件 安装 jdk: sudo apt-get update sudo apt-get install default-jdk 或者 Linux安装JDK1.8(wget方式) 安装maven: sudo apt-get install maven 安装git: sudo apt-get update sudo apt-get install git 下载源码包并构建 下载源码包: wget http:/

linux 上rocketMQ 安装启动

旧巷老猫 提交于 2019-12-10 04:58:56
一:官方文档 https://github.com/alibaba/RocketMQ/wiki/quick-start 我用的目前最新版 3.5.8 ,jdk 1.7 centos6.5 二: linux clone 源码 需要安装git maven 我利用现有环境编译(windows 下),签出源码 编译 双击install.bat 编译打包成功后 target目录下 会有个 alibaba-rocketmq-broker.tar.gz ; 三: 上传编译好的 alibaba-rocketmq-broker.tar.gz 到linux 系统的 /usr/local 目录你自己可以选择 解压文件到 rocketmq 四:你需要安装好jdk1.7 (1.6+ 就行),且配置好环境变量 五:启动nameserver (以下都是在rokcetmq 安装目录下bin目录下) #cd /usr/local/rocketmq/bin #nohup sh mqnamesrv & (//默认端口9876) 验证nameserver是否启动 # tail -f nohup.out The Name Server boot success. 说明你启动成功了 (name server 其实相当于一个注册中心) ps :如果你启动遇到问题,根据提示去解决吧,我遇到域名不识别 ,UnknownHost

Spring Cloud Alibaba 实战(八)

这一生的挚爱 提交于 2019-12-09 12:37:21
Github 博客地址 本文主要讲解RabbitMQ的介绍和安装,Spring Cloud Stream核心概念,Spring Cloud Alibaba RocketMQ学习,异步消息推送与消费 1 审核业务的实现 com/javaedge/contentcenter/service/content/ShareService.java 假设添加积分操作很耗时,我们的主要操作是审核,而不关心积分,所以可以将其异步化 1.1 Spring实现异步的方法 ◆ AsyncRestTemplate 参考文档 Spring 的异步HTTP请求AsyncRestTemplate ◆ @ Async注解 参考文档 https://spring.io/guides/gs/async-method/ ◆ WebClient ( Spring 5.0引入 ,为取代AsyncRestTemplate) 参考文档 https://docs.spring.io/spring/docs5.1 . RELEASE/spring-framework-reference/web-reactive.html#webflux-client ◆ MQ 我们采用此法 2 引入MQ后的架构演进 3 MQ适用场景 异步处理 流量削峰填谷 解耦微服务 4 MQ的选择 流行的MQ那么多,如何选择? Kafka、RabbitMQ、

如果有人再问你怎么实现分布式延时消息,这篇文章丢给他

早过忘川 提交于 2019-12-09 12:21:58
1.背景 上篇文章介绍了 RocketMQ整体架构和原理 有兴趣的可以阅读一下,在这篇文章中的延时消息部分,我写道开源版的RocketMQ只提供了18个层级的消息队列延时,这个功能在开源版中显得特别鸡肋,但是在阿里云中的RocketMQ却提供了支持40天之内任意秒级延时队列,果然有些功能你只能充钱才能拥有。当然你或许想换一个开源的消息队列,在开源社区中消息队列延时消息很多都没有被支持比如:RabbitMQ,Kafka等,都只能通过一些特殊方法才能完成延时的功能。为什么这么多都没有实现这个功能呢?是因为技术难度比较复杂吗?接下来我们分析一下如何才能实现一个延时消息。 2.本地延时 在实现分布式消息队列的延时消息之前,我们想想我们平时是如何在自己的应用程序上实现一些延时功能的?在Java中可以通过下面的方式来完成我们延时功能: ScheduledThreadPoolExecutor:ScheduledThreadPoolExecutor继承了ThreadPoolExecutor,我们提交任务的时候,会将任务首先提交到DelayedWorkQueue一个优先级队列中,按照过期时间进行排序,这个优先级队列也就是我们堆结构,每次提交任务排序的复杂度是O(logN)。然后取任务的时候就会从堆顶取出我们的任务,也就是我们延迟时间最小的任务

rocketmq的broker恢复commit-log的时候如何恢复consumeQueue、indexfile

邮差的信 提交于 2019-12-08 22:33:29
如果一个broker正常退出,是会删除abort文件的。那么启动broker的时候发现abort文件还存在,那么说明上次是异常终止,会进入到commit-log的recoverAbnormally逻辑里面,因为所有其他的信息都是从commit-log获取到的,所以追根溯源只能从commit-log开始着手。 public void recoverAbnormally(long maxPhyOffsetOfConsumeQueue) { // recover by the minimum time stamp boolean checkCRCOnRecover = this.defaultMessageStore.getMessageStoreConfig().isCheckCRCOnRecover(); final List<MappedFile> mappedFiles = this.mappedFileQueue.getMappedFiles(); if (!mappedFiles.isEmpty()) { // Looking beginning to recover from which file int index = mappedFiles.size() - 1; MappedFile mappedFile = null; for (; index >= 0;

rocketmq的broker恢复commit-log的时候如何恢复consumeQueue、indexfile的

情到浓时终转凉″ 提交于 2019-12-08 21:37:29
如果一个broker正常退出,是会删除abort文件的。那么启动broker的时候发现abort文件还存在,那么说明上次是异常终止,会进入到commit-log的recoverAbnormally逻辑里面,因为所有其他的信息都是从commit-log获取到的,所以追根溯源只能从commit-log开始着手。 public void recoverAbnormally(long maxPhyOffsetOfConsumeQueue) { // recover by the minimum time stamp boolean checkCRCOnRecover = this.defaultMessageStore.getMessageStoreConfig().isCheckCRCOnRecover(); final List<MappedFile> mappedFiles = this.mappedFileQueue.getMappedFiles(); if (!mappedFiles.isEmpty()) { // Looking beginning to recover from which file int index = mappedFiles.size() - 1; MappedFile mappedFile = null; for (; index >= 0;

rocketmq如何新增topic

ε祈祈猫儿з 提交于 2019-12-08 20:28:28
新增topic是需要客户端直接通知broker完成的: 通过createAndUpdateTopicConfig方法 发送给broker以后,在AdminBrokerProcessor里面负责处理这个类型消息: private synchronized RemotingCommand updateAndCreateTopic(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); final CreateTopicRequestHeader requestHeader = (CreateTopicRequestHeader) request.decodeCommandCustomHeader(CreateTopicRequestHeader.class); log.info("updateAndCreateTopic called by {}", RemotingHelper.parseChannelRemoteAddr(ctx.channel())); if (requestHeader.getTopic()

rocketmq怎么做序列化的?

心不动则不痛 提交于 2019-12-08 20:25:33
首先看一下RemotingCommand的几个重要属性: private int code; private LanguageCode language = LanguageCode.JAVA; private int version = 0; private int opaque = requestId.getAndIncrement(); private int flag = 0; private String remark; private HashMap<String, String> extFields; private transient CommandCustomHeader customHeader; private SerializeType serializeTypeCurrentRPC = serializeTypeConfigInThisServer; private transient byte[] body;    除了static之外,还有body、extfields是transitent,除此之外都是要直接进行序列化的,默认用fastjson直接序列化。 这里面的extfields跟customHeader是互相转换的,也就是序列化的时候用前者传入,在代码里面用反序列化后的customer对象做操作。customHeader是一个接口,他有很多实现类

RocketMQ环境搭建

与世无争的帅哥 提交于 2019-12-07 13:34:37
在上篇 《消息队列选型》 中我们通过对目前比较流行的各个MQ产品的对比,结合公司具体业务需求,选择了RocketMQ做为我们的消息中间件,这篇分享我们介绍一下RocketMQ的安装配置。 1 、初步理解 Producer/Consumer Group 在安装RocketMQ之前我们先来理解Group概念,在RocketMQ中Group是很重要的。通过Group机制,让RocketMQ天然的支持消息负载均衡!比如某个Topic有9条消息,其中一个Consumer Group有3个实例(3个进程 OR 3台机器),那么每个实例将均摊3条消息!(注意RocketMQ只有一种模式,即发布订阅模式。)如下图所示: 2 、 RocketMQ 的集群部署模式: 在动手操作之前我们先来了解一下RocketMQ的集群部署模式都有哪些。RocketMQ在众多消息队列产品中高可用性是其亮点之一,其集群部署方式有很多种。比如单Master模式、多Master模式、多Master多Slave模式(异步复制)、多Master多Slave模式(同步双写)等。明确个概念,RocketMQ Slave不可以写,可以读,类似于MySQL的主从机制。 单Master 模式: 无需多言,一旦单个broker重启或宕机,一切都结束了!很显然,线上不可以使用。 多Master 模式: 全是Master,没有Slave。当然