RocketMQ学习总结

1、吞吐量:kafka>rocketmq>rabbitmq;消息堆积:kafka>rocketmq>rabbitmq;

2、rabbitmq天然支持集群配置,默认conf配置下有两主两从异步、两主两从同步、两主没有从

3、为了保证正确运行,最好给出4g内存

4、先启动namesrv再启动broker,rocketmq控制台官方没有给,但是有开源爱好者研发rocketmq控制台的图形化管理界面,可以下载下来用idea运行即可查看,或者打成包运行也行。地址:https://github.com/apache/rocketmq-externals

5、Name Server相当于一个注册中心,记录生产者、消费者、broker集群的信息。所以要先启动Name Server

6、Producer发送消息,会默认发送到4个队列中并存储,队列是有序的。

7、针对事务消息的应答状态(LocalTransactionState):COMMIT_MESSAGE、ROLLBACK_MESSAGE、UNKNOW(未知状态,一般用于处理超时等现象);针对消费方消费的应答状态(ConsumerConcurrentlyState):CONSUME_SUCCESS(消费成功)、RECONSUME_LATER(消息重试,消费失败以后重试机制)。(4.4以后变了,看完以后自己查查)SUSPEND_CURRENT_QUEUE_A_MOMENT

8、事务消息可以解决分布式事务以实现数据最终一致性,同时通过补偿机制对消费者消费出问题进行补偿。

9、RocketMQ有推拉两种方式,拉取消息是消费者直接从broker拉取,推送并不是broker直接将消息推送给消费者,而是消费者向broker发送请求,然后broker定时扫描其收到的消息,如果发现是消费者需要的,则会主动推送给消费者。

10、顺序消息

顺序消息需要三个阶段去保证:消息按照顺序发送;消息被存储时保证和发送的顺序一致;消息被消费时保证和存储的顺序一致。

RocketMQ能严格保证顺序消息,但这不是全局顺序,只是分区顺序(queue)。

只用一个队列的话可以保证全局顺序。或者同样的消息只发送到某一个队列。

顺序消息有低延迟性,因为要扫描所有的队列。

11、批量发送消息

RocketMQ默认消费模式是集群模式,若要批量消费,则设置成广播模式。

你可能感兴趣的:(RocketMQ,Java高级,学习笔记)