RocketMQ消息的发送与类别
本文主要内容为:
消息的发送:
- 一对一
- 一对多
- 多对多
消息的类别:
- 同步消息
- 异步消息
- 单向消息
- 延时消息
- 批量消息
后面还会讲到消息的过滤
消息的发送
消息的简单一对一的发生在上一篇的测试中就有写到,这里不再写。
一对多发送
一对多发送是一个生产者多个消费者的情况,而且每个消费者都需要得到生产者发送的消息。
这时有两种方案解决这个问题:
- 分组
在创建消费者的时候我们设置了分组、设置了监听的topic。
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("group1");
consumer.subscribe("topic1","*");
消息队列会把消息发给每个监听了topic的分组中,如果分组有多个成员,则这些成员去分这些消息。
所有如果想要每个消费者都收到这个消息,可以选择让它们各自占一个不同的分组。
- 广播
如果我不想要那么多分组,我就要一个分组中所有消费者都拥有所有的消息呢?
消费者分组中默认的消息分配方式为集群模式,也就是所有的成员按照负载均衡算法获取数据,进行处理,这些消费者构成一个集群。
我们可以将这种分配方式改为广播模式:
consumer.setMessageModel(MessageModel.BROADCASTING);
这样的话组内的每个消费者都会得到所有传给组的消息。
多对多发送
多对多就是多个服务器给多个客户端发送消息。具体还是分配到每一个的topic上来存取。
消息的类别
同步消息
即时性较强,重要的消息,且必须有回执的消息,例如短信,通知(转账成功)
直接发送的就是同步消息
SendResult result = producer.send(msg