RocketMQ 发送消息默认是 异步 的。
详细说明:
同步发送:在同步发送模式下,客户端在发送消息时会等待消息发送成功的响应。即,发送操作是阻塞的,直到消息发送成功或失败才会返回。
异步发送:在异步发送模式下,客户端发送消息后不会等待响应,而是通过回调函数来接收发送结果。发送操作是非阻塞的,客户端可以继续进行其他操作,而不必等待发送操作完成。
默认行为
在 RocketMQ 的默认配置中,发送消息是异步的。即,
send()
方法会立即返回,并且通过回调处理结果。异步发送是为了提高消息发送的性能和吞吐量,因为它允许发送操作不等待确认,从而加速消息的发送过程。如果需要使用 同步发送,可以通过设置发送消息的 超时 和其他参数,或者显式地使用
sendSync()
方法来实现同步发送。
异步发送的示例代码
DefaultMQProducer producer = new DefaultMQProducer("example_group");
producer.start();
Message msg = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes());
producer.send(msg, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("Message sent successfully: " + sendResult);
}
@Override
public void onException(Throwable e) {
System.out.println("Message sending failed: " + e.getMessage());
}
});
同步发送的示例代码
DefaultMQProducer producer = new DefaultMQProducer("example_group");
producer.start();
Message msg = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes());
try {
SendResult sendResult = producer.send(msg);
System.out.println("Message sent successfully: " + sendResult);
} catch (Exception e) {
e.printStackTrace();
}
总结
默认情况下,RocketMQ 是 异步发送 消息的。
可以通过
sendSync()
方法或适当的配置来实现同步发送。