开发者社区 > 云原生 > 云消息队列 > 正文

RocketMQ有没有JAVA延时的样例?

RocketMQ有没有JAVA延时的样例?

展开
收起
嘟嘟嘟嘟嘟嘟 2023-10-30 13:01:29 86 0
1 条回答
写回答
取消 提交回答
  • RocketMQ确实支持延迟消息功能,但需要注意的是,它不支持任意时间精度的延迟消息。在开源版本中,RocketMQ支持18个特定级别的延迟。生产者把消息发送到消息队列后,并不期望立即被消费,而是等待指定时间后才可以被消费者消费。

    为了实现延时消息,所有的延迟消息都由producer发出并存放到同一个特定的topic下,不同的延迟级别会对应不同的topic。例如,对于延时3秒的消息,其对应的topic可能是SCHEDULE_TOPIC_XXXX_3000。

    以下是一个简单的示例代码:

    import org.apache.rocketmq.client.producer.DefaultMQProducer;
    import org.apache.rocketmq.common.message.Message;
    
    public class DelayMessageProducer {
        public static void main(String[] args) throws Exception {
            // 创建一个名为 "TestProducerGroup" 的生产者实例
            DefaultMQProducer producer = new DefaultMQProducer("TestProducerGroup");
            // 设置 NameServer 地址
            producer.setNamesrvAddr("localhost:9876");
            // 启动生产者
            producer.start();
            // 构建一个延时消息
            Message msg = new Message("TopicTest", "TagA", "OrderID001", "Hello world".getBytes());
            // 设置消息的延时级别,例如 3秒
            msg.setDelayTimeLevel(3);
            // 发送消息
            producer.send(msg);
            // 关闭生产者
            producer.shutdown();
        }
    }
    

    请注意,上述代码仅为示例,实际使用时需要根据具体的环境和需求进行调整。

    2023-10-30 14:44:29
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
    The Reactive Cloud Native Arch 立即下载
    JAVA开发手册1.5.0 立即下载