本文档主要是rocketmq实际代码使用,常见词语介绍等查看其他文档
http://rocketmq.apache.org/release_notes/release-notes-4.3.2/二进制文件下载地址,下载后可以直接解压运行
https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-source-release.zip源码方式下载地址,下载后需要自己打包
进入rocketmq的本目录
nohup sh mqnamesrv,
进入本目录
nohup sh mqbroker - n localhost: 9876 autoCreateTopicEnable=true,
集群方式参考集群配置文件 rocketmq 集群
默认情况下,我们的服务器都是单独的独立服务器,不会出现这种情况,但是我们在测试过程中使用的是虚拟机,配置不够,会导致无法启动
修改runbroker。sh和runserver。sh
分别找到下图中的指示位置
修改内存大小即可,大小请自己按照自己虚拟机的配置适当调整,比如我修改为了以下值
此处非必须,实际开发中使用较少
下载 rocketmq-console 源码:https://github.com/apache/rocketmq-externals
进入子目录 rocketmq-console 下
执行 mvn 命令打包
mvn清洁包-DskipTests
进入 目标目录
rocketmq-console-ng-1.0.0。jar 即为 springBoot 项目
在该目录下 CMD 执行命令:
java jar rocketmq-console-ng-1.0.0。jar——服务器。端口=12581——rocketmq.config.namesrvAddr=10.89.0.65:9876
其中
——server.port 为运行的这个 web 应用的端口,如果不设置的话默认为 8080 , ——rocketmq.config.namesrvAddr 为 RocketMQ 命名服务地址,如果不设置的话默认为 "
了,访问下 http://localhost: 12581 试试吧。
或者打包成 战争包扔到tomcat 中运行
此案例中使用的是一个消费者,所以消费者代码只有一个
表示。rocketmq
rocketmq-client
4.3.2
原理:同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式。
应用场景:此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。
Created by jackiechan>
Created by jackiechan>
Created by jackiechan>
但是如果第一条被发送到消费者后,消费者没有响应(消费者发送响应但是因为网络问题丢失或者消费者就没有收到消息),那么在这种情况下你是继续发送第二条还是重发第一条呢?如果是严格消息顺序,那肯定是重发第一条,但是如果是消费者消费后的响应丢失了,那么重发第一条就会造成重复消费。
从另外一方面看,如果不考虑网络异常,那么要实现严格消息,就必须采取一种一对一关系,生产者A的消息对应到MQ服务器1的X队列,消费者A消费X队列。这样串行结构就会造成系统吞吐量太低;更多异常需要处理比如消费端出现问题,那么整个消息队列就会出现阻塞。RocketMQ通过轮询所有队列来确定消息发送到哪一个队列(负载均衡),比如相同订单号的消息会被先后发送到统一队列中。所以RocketMQ
消息重复
造成消费重复的根本原因是网络不可达,只要有网络,这种网络的不稳定因素就存在你无法规避。所以解决这个问题的最好办法就是绕过它。这就变成了,消费端收到两个一样的消息后如何处理,而不是从发送端解决不发送2个一样的消息。对于消费端的要求就是:
消费端处理业务消息要保持幂等性,也就是同一个东西执行多次会得到相同结果
RocketMQ