消息发给谁和存储在哪里?
Producer连接NameSever Producer 通过 NameSever 获取指定 Topic 的 Broker 路由信息,并在本地保存一份缓存数据,比如一个Topic有哪些 MessageQueue,MessageQueue 在哪几台 Broker 上,Broker 的ip.port等等。Producer 发送消息只发到 Master Broker上,Slave 通过主从同步获取数据。 那么 Produce 是怎么连接NameSever 的呢
Producer连接Broker
Producer连接上Broker之后,消息会通过轮询的方式发送到Broker上,并且存储在Broker中的CommitLog中,这里面存储的是原始消息,还有一个ConsumeQueue用于存储投递到某一个queue的消息的位置信息。当然,消息队列会持久化到磁盘中的,不影响内存,当然也会定期清理消息。 那消费完的消息去了哪里呢?什么时候清理物理消息文件呢?还有这样设计的好处呢? 这些我们都留在下下一篇中,也就是Broker篇,让你透彻了解Broker这个大脑是如何助力RocketMQ支持这么高的吞吐量的 总之啊,这个问题值得大家深入研究一下,如果再面试的时候,你不仅能说出RocketMQ的用处,你还能说出它的存储原理和寻址原理,那面试官就爱上你了。此时你再拿出王炸,就是解决各种实际问题的能力,比如如何处理重复消息啊、如何保证消息的顺序性啊、在分布式系统中如何保证分布式事务啊 面试官当场给你发offer,say:How much money do you expect to work for us ? 3、消息的种类 RocketMQ种的消息种类大致可以分为四种:普通消息、定时和延时消息、顺序消息、事务消息四种类型,这是重点! 简单介绍下四种类型
消息队列RocketMQ提供的四种消息类型所对应的Topic不能混用,例如,创建的普通消息的Topic只能用于收发普通消息,不能用于收发其他类型的消息;同理,事务消息的Topic也只能收发事务消息,不能用于收发其他类型的消息,以此类推 普通消息 普通消息:消息队列RocketMQ中无特性的消息,区别于有特性的定时和延时消息、顺序消息和事务消息 (编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |