当前位置: 首页 > news >正文

RocketMQ-

第一课

下载源码并编译安装

这个broker对应的jar包启动时,传入到启动方法中的JVM参数

可以看到默认broker的最大内存和最小内存就是8G,如果虚拟机的内存不足8G,那么./mqBroker启动broker就会报错。所以需要把这几个参数值改小一点

提示找不到node-01这个主机名对应的ip地址

默认不加参数,就是启动broker,并直接在本机中找nameserver进行注册,我们也可以在启动时制定往哪台nameserver上连接

测试发送和接收消息

数据发送失败,提示找不到这个topic(就是因为当前要发送消息的broker,没有注册到nameserver上去)

通过启动broker,并注册到指定的nameserver后

此时,client端发送数据就成功了,可以看到发送的数据的topic就是TopicTest

消费者消费消息

rocketmq-console

像rocketmq-4.6.1-master这个里面就有pom文件,rocketmq-4.6.1-master目录下有namesrv、brokker、client、等等,master目录中有pom文件,所以这就是一个聚合项目,可以整个使用一次mvn命令进行编译

这里编译完成以后,是生成一个springboot框架的控制台项目jar包,我们需要通过jar -jar来启动这个控制台项目

正常java项目打包出来就是jar包,我们需要通过jar -jar来启动项目,就如当前的rocketmq-console项目,而上面的rocketmq-master可以通过./mqbroker启动项目,是因为写了runborker.sh的shell脚本文件,runborker.sh的shell脚本文件中就配置了很多JVM的启动参数等

这就是这个springboot项目的配置文件

或者,因为这是一个springboot项目,所以我们可以在jar -jar启动springboot项目的jar,在后面跟上一些参数

这个springboot写的控制台项目就启动起来了

可以看到有broker TOP 10的展示,说明RocketMQ生来就是为了多集群多broker,大数据量的存储而生的

整体架构

nameserver是无状态的(主要是为了高可用),也就是它里面什么属性、状态都不记录,所有的nameserver都是对等的,都干一模一样的事情,多台nameserver中缺了哪台都无所谓

producer只能连master,consumer既可以连master、又可以连slave进行消费

zk,没有自己写的nameserver的性能高。nameserver使用的是CAP中的AP,多个nameserver之间是不保证一致性的

dubbo、springcloud、rocketMQ的producer都是客户端负载均衡的典型,客户端侧缓存服务列表,自己选择负载均衡算法,快速失败以后,可以快速的发起重试调用,追求速度

Nginx、LVS这是服务端负载均衡的典型

Linux服务器时间校准

第二课

消息发送

同步发送

日常使用尽量就选这种发送方式,尽量看一下每次发送的SendResult是不是发送成功了

批量同步发送

如果不执行shutdown,那么producer会和broker一直建立长连接不关闭,producer会一直保持运行

批量发送的消息总量,尽量不要大于1M

异步消息发送

异步发送时,不能随便shutdown,因为无法确认异步发送的回调是什么时候来的

可以看到是,先停机、然后异步发送的回调才回来,并执行onException()方法

消费消费

默认就是集群消费模式,就是集群中有一个消费者消费成功就OK了

broker把一条消息push给了消费者A,消费者需要给broker回送CONSUME_SUCCESS或者RECONSUME_LATER这样的ACK确认,如果broker长时间没有收到这条消息对应从消费者A回来的ACK,那么broker可能会把这条消息重新投递给消费者B、当然也可能还是投给消费者A

广播消息

broker会给每个消费者都投递一次,每个消费者能不能接收到,就看网络情况了。只有集群消费模式,消费进度才会在broker端维护

消息消费状态

通过控制台可以看到某个topic下的某条消息的消费状态,并且是集群消费模式下,是整个xxoocsm集群中有一台消费者消费了这条消息,那么这条消息的消费状态,就会被设置为已消费

消费过滤

如果消费组xxoocsm,订阅的是topicA的tag1,但是当前broker发过来的是topicA的tag1消息,那么从消费组xxoocsm看来,topicA的tag1消息的状态就是已消费但被过滤(客户端过滤模式)

同一个消费组,必须是订阅的topic,并订阅相同的tag

http://www.dtcms.com/a/276775.html

相关文章:

  • 69 局部变量的空间分配
  • 系统引导修复
  • 功耗校准数据PowerProfile测试方法建议
  • (一)一阶数字低通滤波器---原理及其推导
  • 程序改错---字符串
  • 十三、K8s自定义资源Operator
  • 客户资源被挖?营销方案泄露?企业经营信息保护避坑指南
  • Python Day11
  • Agent任务规划
  • 【PMP备考】敏捷思维:驾驭不确定性的项目管理之道
  • QT中设计qss字体样式但是没有用【已解决】
  • 文件系统(精讲)
  • JVM与系统性能监控工具实战指南:从JVM到系统的全链路分析
  • 【每日刷题】阶乘后的零
  • SOEM build on ubuntu
  • Golang实战:使用 Goroutine 实现数字与字母的交叉打印
  • 使用bp爆破模块破解pikachu登录密码
  • 使用frp内网穿透:将本地服务暴露到公网
  • 张量类型转换
  • 深入探讨Java的ZGC垃圾收集器:原理、实战与优缺点
  • 格密码--数学基础--08最近向量问题(CVP)与格陪集
  • Mentor软件模块复杂,如何分角色授权最合理?
  • 【PTA数据结构 | C语言版】阶乘的递归实现
  • 串口屏的小记哦
  • 鸿蒙进程通信的坑之ServiceExtensionAbility
  • Datomic数据库简介(TBC)
  • Ntfs!LfsFlushLfcb函数分析之Ntfs!_LFCB->LbcbWorkque的背景分析3个restart页面一个普通页面的一个例子
  • 如何在IEEETrans格式的latex标题页插入图像
  • CCS-MSPM0G3507-4-基础篇-串口通讯-实现收和发
  • Java SE--抽象类和接口