使用RocketMQ有两种方式,一种是引入rocketmq-client需要自己创建生产者和消费者,相对来说比较繁琐;另一种是引入rocketmq-spring-boot-starter(对rocketmq-client进行了封装),发消息和消费消息都比较简洁。
这里采用的集成方式是rocketmq-spring-boot-starter
一、RocketMQ的消息类型
RocketMQ的消息发送和接收都是有个比较固定的步骤的,大致如下:
RocketMQ的消息类型有:
1.消息的发送和接收方式
普通消息的发送方式有3种:
单向发送、同步发送和异步发送
。
生产者消息发送时有三种形式:
(1)单向发送
单向发送使用producer.sendOneWay方式来发送消息,这个方法没有返回值,也没有回调
单向发送是指发送方只负责发送消息,不等待服务器回应且没有回调函数触发,即只发送请求不等待应答。
使用场景:对数据的可靠性要求不高,丢失了也没关系,如日志收集
这种场景,可以采用这种方式发送消息,这种消息发送方式是速度最快的
(2)同步发送
producer发送时会同步等待broker返回一个发送状态。如果失败会重试。吞吐量最低,但安全
同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式。
使用场景:重要通知邮件、报名短信通知、营销短信系统
等都可以使用这种方式
(3)异步发送
producer在发送后去做自己的事情,异步接受broker的回调结果,比较有趣的地方就是引入了一个countDownLatch来保证所有消息回调方法都执行完了再关闭Producer
异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
发送方通过回调接口接收服务器响应,并对响应结果进行处理。 异步发送一般用于链路耗时较长,对RT响应时间较为敏感的业务场景,例如用户视频上传后通知启动转码服务
,转码完成后通知推送转码结果等,说白了,这种方式如果用的适当,可以提高系统响应速度,提高用户体验
。
总结:
单向发送