Java架构学习(三十五)RocketMQ基础&rocketMQ概述&rocketMQ原理&rocketMQ集群&rocketMQ搭建集群&rockeyMQAPI&rocketMQ解决幂等问题

一、rocketMQ概述

1、rocketmq:分布式消息中间件,支持集群,效率非常高。
2、activityMQ是点对点通讯,发布订阅、 本身不支持集群,不支持分布式。
	为什么MQ发生消息堆积,消费者不会宕机?
	答:因为MQ中有消息缓存机制。
	MQ发生消息堆积,消费者不会宕机,但是消息中间件可能会宕机。

3、rocketmq 海量消息堆积、支持上万个队列。
4、消息中间件集群的目的是什么?
答:解决单台服务器的压力。
5、rocketmq支持消息堆积,重试机制、持久化、顺序消息、事务消息、
     支持分布式消息

二、RocketMQ原理

在这里插入图片描述

主要流程:
1、生产者和消费者的地址要注册在nameServer中。进行连接。
2、生产者发布消息到 broker中去后,broker会根据nameserver中
注册的地址来进行分发到消费者中去。

在这里插入图片描述
多主才是均摊消息存放。
集群:基本每台服务器安装软件都要相同,使用id进行区分。

三、rocketMQ集群搭建

系统环境: centos 64位
	1.必须要有jdk环境且jdk必须要64位。1.7版本以上。
	2、配置jvm参数 

第一步:安装jdk
第二步:添加hosts文件
	vi /etc/hosts

	192.168.110.187 rocketmq-nameserver1
	192.168.110.187 rocketmq-master1
	192.168.110.188 rocketmq-nameserver2
	192.168.110.188 rocketmq-master2
	
	service network restart
	注意: Error:No suitable device found: no device found for connection "System eth0"
	解决办法:
	(1)ifconfig -a 查看物理 MAC HWADDR 的值
	(2)vim 编辑文件 /etc/sysconfig/network-scripts/ifcfg-eth0中修改ifconfig中查出的MAC HWADDR值;
	
	上传安装包
	# 上传alibaba-rocketmq-3.2.6.tar.gz文件至/usr/local
	# tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local
	# mv alibaba-rocketmq alibaba-rocketmq-3.2.6
	# ln -s alibaba-rocketmq-3.2.6 rocketmq

nameServer 存放的是rocketMQ地址信息
BrokerServer存放的是消息

liunx命令:jps   :就是查询当前系统有哪些java应用程序在运行。

四、rocketMQ集群搭建

克隆上一台配置好的rocketMQ的虚拟机环境


修改当前的host文件,
service network restart
注意: 
Error:No suitable device found: no device found for connection "System eth0"
解决办法:
(1)ifconfig -a 查看物理 MAC HWADDR 的值
(2)vim 编辑文件 /etc/sysconfig/network-scripts/ifcfg-eth0中修改ifconfig中查出的
MAC HWADDR值;

部署一个tomcat 里面放
rocketmq-web-console.war包

在这里插入图片描述


五、RocketMQ中的API介绍

	代码:报错:  没解决  解决方案可能是版本太低了, 遗留
	 No route info of this topic, leeue_topic

六、rocketMQ解决幂等问题

RocketMQ消费成功后就不会进行重试了。

消息中间件幂等问题的产生原因?
答:是因为消费者没有及时将消费结果通知给生产者。
      生产者没有拿到消费结果,自动重试机制。

解决方案是:使用全局ID ,activityMQ可以使用消息id作为全局ID.
rocketMQ重试时,消息id不一致,是怎么区分全局id的,使用setKey。
message.setKeys();

解决mq重复消费问题,使用日志+全局id进行区分。

每次消费记录保存到redis中,或者mongdb。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值