rocketmq 初试

环境

个人电脑

win10、jdk1.8.0_121、idea2.6.2、rocketmq4.0.0-incubating、mvn3.3.9

下载源码

一开始下载rocketmq的源码3.5.8,但是导入idea编译报错

Error:(34, 8) java: com.alibaba.rocketmq.broker.plugin.MockMessageStore不是抽象的, 并且未覆盖com.alibaba.rocketmq.store.MessageStore中的抽象方法lockTimeMills()  

猜测是jdk版本问题,我没有解决

选择了新的版本4.0.0-incubating

导入idea

选择 File -> New -> Project from existing sources 导入项目格式选择maven
可以勾选自动下载pom文件依赖

Debug

把项目的目录,添加为新的环境变量ROCKETMQ_HOME
当然也可以不添加在环境变量中,直接在代码里加入

final NamesrvConfig namesrvConfig = new NamesrvConfig();  
namesrvConfig.setRocketmqHome("C:\Users\chainhelen\mq\Rocket4.0.0");  

注意先启动 namesrv,再启动broker
在代码中可以查看到,namesrc默认监听端口为9876,故在启动之前可以先检查一下9876端口防止端口冲突

Test

编写例子,注意网上的例子大多还是原版本,所以导入的packet是不一样的
早期的packet名字

import com.alibaba.rocketmq.client.exception.MQClientException;  
import com.alibaba.rocketmq.client.producer.DefaultMQProducer;  
import com.alibaba.rocketmq.client.producer.SendResult;  
import com.alibaba.rocketmq.common.message.Message;  

加入apache后

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;  
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;  
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;  
import org.apache.rocketmq.client.consumer.listener.MessageListener;  
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;  
import org.apache.rocketmq.client.exception.MQClientException;  
import org.apache.rocketmq.common.message.MessageExt;  

linux编译

mvn -Dmaven.test.skip=true clean package install assembly:assembly   -P release-all  -U  

关键参数在于-P release-all不能少
这样生成的target里面会有apache-rocketmq-all以及它的压缩包