先说下RocketMQ的优点:
-
单机吞吐量:十万级
-
可用性:非常高,分布式架构
-
消息可靠性:经过参数优化配置,消息可以做到0丢失
-
功能支持:MQ功能较为完善,还是分布式的,扩展性好
-
支持10亿级别的消息堆积,不会因为堆积导致性能下降
-
源码是java,我们可以自己阅读源码,定制自己公司的MQ,可以掌控
缺点:
-
支持的客户端语言不多,目前是java及c++,其中c++不成熟;
-
社区活跃度一般
-
没有在 mq 核心中去实现JMS等接口,有些系统要迁移需要修改大量代码
docker部署服务端:
rocketmq-server
docker run --name rocketmq.server -d \
-p 9876:9876 \
foxiswho/rocketmq:server
rocketmq-broker
docker run --name rocketmq.broker -d \
-p 10911:10911 \
-p 10909:10909 \
--link rocketmq.server:namesrv \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v `pwd`/conf/broker.conf:/etc/rocketmq/broker.conf \
foxiswho/rocketmq:broker
rocket-console
docker run --name rocketmq.console \
-p 8180:8080 \
--link rocketmq.server:namesrv \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -t \
styletang/rocketmq-console-ng
分别启动相关服务,若不知道docker怎么安装的可以看我以前的文章
访问mq的查看页面
客户端:
用到的依赖:
<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.5.2</version>
</dependency>
生产者:
package org.jeemp.rocketmq;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JeempProducer {
private Logger logger = LoggerFactory.getLogger(JeempProducer.class);
private String producerGroupName;
private String nameServerAddr;
private DefaultMQProducer defaultMQProducer;
public void setNameServerAddr(String nameServerAddr) {
this.nameServerAddr = nameServerAddr;
}
public void setProducerGroupName(String producerGroupName) {
this.producer