
消息中间件
文章平均质量分 69
FYHannnnnn
知道的越多,不知道的也就越多
展开
-
RocketMQ Consumer源码剖析
一,Consumer实例初始化DefaultMQPushConsumer#start()DefaultMQPushConsumerImpl#start()二,拉取消息RocketMQ中推送与拉取消息底层皆为拉取PullMessageService#run()DefaultMQPushConsumerImpl#pullMessage()二,消费消息组装PullMessageProcessor#processRequest()Defau..原创 2022-01-22 23:47:22 · 1907 阅读 · 0 评论 -
RocketMQ Producer源码剖析
一,底层接口(MQAdmin)二,启动流程DefaultMQProducer-->start()DefaultMQProducerImpl-->start()客户端的启动MQClientInstance-->start()三,消息的发送DefaultMQProducer -->send(Meesage msg)DefaultMQProducerImpl-->send(Message)获取路由信息,如果缓..原创 2022-01-22 19:09:05 · 138 阅读 · 0 评论 -
RocketMq NameServer源码解析
一,启动入口(NameSrvStartUp类)通过mqnamesrv命令启动,会去执行类NameSrvStartup,为NameServer启动入口类org.apache.rocketmq.namesrv.NamesrvStartup创建命名控制器(createNamesrvController方法)命名控制器的启动(start方法)--> initializie() 初始化方法二,broker注册NameServer(BrokerStartu..原创 2022-01-22 17:56:55 · 194 阅读 · 0 评论 -
RocketMQ高级特性与原理
消息的存储机制目前的高性能磁盘,顺序写速度可以达到600MB/s, 超过了一般网卡的传输速度。但是磁盘随机写的速度只有大概100KB/s,和顺序写的性能相差6000倍!数据结构消息真正的物理存储文件 是CommitLog,ConsumeQueue是消息的逻辑队列,类似数据库的索引文件,存储的是指向物理存储 的地址。每个Topic下的每个Message Queue都有一个对应的ConsumeQueue文件CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体原创 2021-12-09 14:02:25 · 636 阅读 · 0 评论 -
RocketMQ架构
RocketMQ的角色:Producer:消息的发送者;举例:发信者 Consumer:消息接收者;举例:收信者 Broker:暂存和传输消息;举例:邮局 NameServer:管理Broker;举例:各个邮局的管理机构 Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者 可以订阅一个或者多个Topic消息 Message Queue:相当于是Topic的分区;用于并行发送和接收消息...原创 2021-11-28 03:15:00 · 403 阅读 · 0 评论 -
RabbitMQ高级特性
一,消息的可靠性客户端代码中的异常捕获,包括生产者和消费者 消息发送过程通过try catch 方式捕获异常, 在异常处理理的代码块中执行行回滚业务操作或者执行行重发操作等。这是一种最大努力确保的方式, 并无法保证100%绝对可靠,因为这里没有异常并不代表消息就一定投递成功。可以通过spring.rabbitmq.template.retry.enabled=true 配置开启发送端的重试AMQP/RabbitMQ的事务机制没有捕获到异常...原创 2021-11-26 04:00:00 · 901 阅读 · 0 评论 -
RabbitMQ架构了解
一,RabbitMQ工作流程生产者发送消息的流程:1. 生产者连接RabbitMQ,建立TCP连接( Connection),开启信道(Channel) 2. 生产者声明一个Exchange(交换器),并设置相关属性,比如交换器类型、是否持久化等 3. 生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等 4. 生产者通过 bindingKey (绑定Key)将交换器和队列绑定( binding )起来 5. 生产者发送消息至RabbitMQ Broker,其中包含 r原创 2021-11-24 22:01:31 · 1156 阅读 · 0 评论 -
RabbitMq常用命令
# 前台启动Erlang VM和RabbitMQrabbitmq-server# 后台启动rabbitmq-server -detached# 停止RabbitMQ和Erlang VMrabbitmqctl stop# 查看所有队列rabbitmqctl list_queues# 查看所有虚拟主机rabbitmqctl list_vhosts# 在Erlang VM运行的情况下启动RabbitMQ应用rabbitmqctl start_apprabbitmqctl stop_app.原创 2021-11-23 22:36:28 · 382 阅读 · 0 评论 -
消息中间件概念与常用中间件选型
分布式异步通信模式优点:系统间解耦,并具有一定的可恢复性,支持异构系统,下游通常可并发执行,系统具备弹 性。服务解耦、流量削峰填谷等。缺点:消息中间件存在一些瓶颈和一致性问题,对于开发来讲不直观且不易调试,有额外成本。消息中间件概念消息中间件就是在通信的上下游之间截断:break it,Broker 然后利用中间件解耦、异步的特性,构建弹性、可靠、稳定的系统。异步处理、流量削峰、限流、缓冲、排队、最终一致性、消息驱动等需求的场景都可以使用消息中 间件消息中间件的选型Rab原创 2021-11-22 22:56:25 · 2004 阅读 · 0 评论 -
RabbitMq基本架构
RabbitMq整体逻辑架构RabbitMQ Exchange类型RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。Fanout会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中(广播方式)Directdirect类型的交换器路由规则很简单,它会把消息路由到那些BindingKey和RoutingKey完全匹配的 队列中(指定了绑定队列/消费队列的传输方式)Topic(是对于Direct ...原创 2021-11-22 20:59:12 · 344 阅读 · 0 评论