环境
个人电脑
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
以及它的压缩包