RocketMq是支持Topic模式的MQ中间件,它的传输格式为topic(主题,一个product对应一个主题,),Tag(标签,其实就是副标题,是为了更好的支持集群模式而出现的,这样客户端可以指定所要接收的标签,划分更加细腻),
key(键,一条消息对应一个键),body(要发送的具体内容,要转换为byte数组);
RocketMq支持,同步发送和异步发送两种机制,同步发送也就是在生产方向broker发送消息后,要等broker返回响应,这样才能继续发送下一个消息;
异步发送指的则是生产方向broker发送消息后,不等broker返回响应,直接发送下一条,不过也可以收到返回消息,需要实现SendCallback接口(其实底层是使用了Callable线程接口)
(两者效率隔了百分之5边上)
RocketMq生产者使用:
三种生产模式:
1.普通模式:使用传统的send发消息,不能保证消息的顺序一致性;
2.顺序模式:可以保证严格的消息顺序进行消费;
遵循全局顺序的时候使用一个queue(1,2,3要严格按照步骤执行),局部顺序的时候可以使用多个queue并行消费(多个123,之间互不干扰)
3.事务模式:支持事务方式对消息进行提交处理,在rocketmq里事务分为两个阶段 .
第一个阶段是把消息发送给MQ的时候,此时消费方不可见,但消息已经发送到broker上;
第二个阶段为本地消息回调处理,(这时候也就是存储到数据库中,或做其它操作)如果成功的话返回COMMIT_MESSAGE,则在broker上的数据对消费端可见,
失败的话则返回ROLLBACK_MESSAGE,消费端不可见.
事物模式主要是为了能保证数据的一致性,也就是保证数据能百分百入库加百分百发送到mq上否则就是失败,实现了分布式事物;不过阿里砍掉了,一个检查事物是否成功的机制,
所以不能保证就算在遇到突发情况的情况下也能使数据保持一致性;
RocketMq的主题在发送前要事先在broker中配置好