中间件-MQ

MQ的优点:

解耦,消峰,数据分发

MQ的缺点:

系统的可用性降低,系统复杂度提高,数据一致性问题


window下rocketmq启动:

新增环境变量 ROCKETMQ_HOME="D:\rocketmq"

启动  mqnamesrv

再启动  mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true 

备注:RocketMQ默认的虚拟机内存比较大,编辑 runbroker.sh 和 runserver.sh 可以修改默认JVM大小


角色分类

Producer:消息的发送者;发信者

Consumer:消息接收者;收信者

Broker:暂存和传输消息;邮局

NameServer(无状态,无须同步):管理Broker;各个邮局的管理机构

Topic: 区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topoic 消息

Message Queue: 相当于是Topic的分区,用于并行发送和接收消息



集群工作流程:

1 启动NameServer,NameServer 起来后监听端口,等待 Broker,Producer,Consumer 连上来,相当于一个路由控制中心

2 Broker启动,跟所有的NameServer 保持长连接,定时发送心跳包,心跳包中包含当前Broker信息(ip+端口等)以及存储所有Topic信息,注册成功后,NameServer集群中就有Topic跟Broker的映射关系

3 收发消息前,先创建Topic,创建Topic时,需要指定该Topic 要存储在哪些Broker 上,也可以在发送消息时自动创建Topic

4 Producer 发送消息,启动时先跟NameServer 集群中的其中一台简历长连接,并从NameServer 中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息

5 Consumer跟Producer 类似,其中一台NameServer 建立长连接,获取当前订阅Topic存在哪些Broker 上,然后直接跟Broker建立连接通道,开始消费消息


集成客户端需要的 jar包

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.4.0</version>
</dependency>

消息发送者步骤分析:

 1 创建消息生产者producer,并制定生产者名

2 制定nameserver 地址

3 启动producer

4 创建消息对象,制定主体topic,tag和消息体

5 发送消息

6 关闭生产者 producer

消息消费者步骤分析:

1 创建消费者consumer,指定消费者组名

2 指定 nameserver地址

3 订阅主题 topic 和tag

4 设置回调函数,处理消息

5 启动消费者consumer


消息发送

1 发送同步消息,发送给客户端后阻塞,直至客户端返回信息

2 发送异步消息用在对响应时间敏感的业务场景,即发送端不能容忍长时间地等待Broker的响应

3 不担心发送的结果,列如日志发送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值