Java小案例-RocketMQ的11种消息类型,你知道几种?(同步消息,异步消息,单向消息)
RocketMQ支持以下11种消息类型:
- 普通消息
- 有序消息
- 分区有序消息
- 延迟消息
- 定时(延时)消息
- 事务消息
- 一致性消息
- 拉消息
- 推消息
- 广播消息
- 组播消息
其中,同步消息、异步消息和单向消息可以通过以下方式实现:
- 同步消息:发送消息时,发送者等待服务器的响应。
- 异步消息:发送消息时,发送者不需要等待服务器的响应。
- 单向消息:发送者只管发送消息,不等待服务器的响应,也不关心消息是否发送成功。
以下是使用RocketMQ发送同步消息、异步消息和单向消息的简单示例代码:
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
public class SyncAsyncOneWayExample {
public static void main(String[] args) throws Exception {
// 生产者
DefaultMQProducer producer = new DefaultMQProducer("producer-group");
producer.setNamesrvAddr("localhost:9876");
producer.start();
// 同步消息
Message syncMsg = new Message("topic-sync", "tag-sync", "key-sync", "Hello Sync".getBytes());
SendResult syncSendResult = producer.send(syncMsg);
System.out.println("同步消息发送结果:" + syncSendResult);
// 异步消息
Message asyncMsg = new Message("topic-async", "tag-async", "key-async", "Hello Async".getBytes());
producer.send(asyncMsg, (SendResult sendResult) -> {
System.out.println("异步消息发送结果:" + sendResult);
});
// 单向消息
Message oneWayMsg = new Message("topic-oneway", "tag-oneway", "key-oneway", "Hello OneWay".getBytes());
producer.sendOneway(oneWayMsg);
// 关闭生产者
producer.shutdown();
}
}
在这个例子中,我们创建了一个RocketMQ生产者,并向三个不同的主题发送消息:"topic-sync"用于同步消息,"topic-async"用于异步消息,"topic-oneway"用于单向消息。每种类型的消息都有其特定的应用场景,例如,同步消息适合需要立即响应的场景,而单向消息适合不需要响应和不关心发送成功与否的场景。
评论已关闭