侧边栏壁纸
博主头像
月伴飞鱼 博主等级

行动起来,活在当下

  • 累计撰写 126 篇文章
  • 累计创建 31 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

RocketMQ发送消息默认是同步的还是异步的?

月伴飞鱼
2025-04-01 / 0 评论 / 1 点赞 / 7 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

RocketMQ 发送消息默认是 异步 的。

详细说明:

  1. 同步发送:在同步发送模式下,客户端在发送消息时会等待消息发送成功的响应。即,发送操作是阻塞的,直到消息发送成功或失败才会返回。

  2. 异步发送:在异步发送模式下,客户端发送消息后不会等待响应,而是通过回调函数来接收发送结果。发送操作是非阻塞的,客户端可以继续进行其他操作,而不必等待发送操作完成。

默认行为

  • 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() 方法或适当的配置来实现同步发送。

公众号.png

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin
博主关闭了所有页面的评论