最近用了用kafka,踩了各种各样的坑(一口老血)。其中最让人头疼的是消费失败后的重发问题,目前我自己的解决办法是消费该分区的某批数据时,如果该批数据有消费失败的,就不提交该批数据的偏移量,从而让生产者重发数据。然而只有在重启生产者时,消费失败的数据才能重新消费,非常谜,打算以后抽出时间看看这是为啥(如果有解决办法请大力评论。。我的kafka版本是0.10你懂的)。
然后我在找kafka相关解决办法的时候,发现rocketmq的重发机制十分好,于是决定再踩踩rocketmq的坑。
单机部署
单机部署rocketmq4.2.0尝尝鲜(三口老血),到rocketmq的官网里找到quick start(我现在理解的quick大约得有一百万年的时间),有个单机部署教程(http://rocketmq.apache.org/docs/quick-start/),然而里面的坑很多。所以在此记录一下我的安装历程:
1.安装环境要遵循官方的建议(环境的安装在此不赘述)
64bit OS, Linux/Unix/Mac is recommended;
64bit JDK 1.8+;
Maven 3.2.x
Git
2.下载安装包,并解压:
unzip rocketmq-all-4.2.0-source-release.zip
3.进入解压后的文件的根目录,编译:
mvn -Prelease-all -DskipTests clean install -U
但是会编译失败,并且报找不到netty-tcnative包的错误,这时我们到rocketmq-all-4.2.0/remoting/pom.xml中注释一行代码(蓝色部分):
之后再编译,就编译成功了。
4.按照quick start,我们在根目录进入到该路径:
cd distribution/target/apache-rocketmq
5.我们需要在该路径下启动name server,在这之前,我们要改一改runserver.sh(在distribution/target/apache-rocketmq/bin下)的相关配置:
接着我们就可以启动name server了:
nohup sh bin/mqnamesrv &
6.启动broker前,我们也需要改一些runbroker.sh的配置(在distribution/target/apache-rocketmq/bin下,修改位置与name server配置文件相同):
修改后,还要增加broker的配置(在distribution/target/apache-rocketmq下,新增broker1.sh文件并打开增加以下内容,保存):
还需要再改一些tools.sh的配置(在distribution/target/apache-rocketmq/bin下,修改位置与name server配置文件相同):
最后在distribution/target/apache-rocketmq路径下启动broker:
nohup sh bin/mqbroker -n localhost:9876 -c /opt/rocketmq-all-4.2.0/distribution/target/apache-rocketmq/broker1.properties &
7.接下来,我们就可以试一试官方提供的生产者消费者实例了,按照quick start的方法操作即可
8.停止name server和broker,也是按照quick start的方法操作
来源:oschina
链接:https://my.oschina.net/u/4329755/blog/4046777