分布式消息服务RocketMQ版-发送定时消息:发送定时消息

时间:2025-02-12 15:02:58

发送定时消息

发送定时消息的示例代码如下:

import java.nio.charset.StandardCharsets;import java.time.Instant;import org.apache.rocketmq.client.exception.MQBrokerException;import org.apache.rocketmq.client.exception.MQClientException;import org.apache.rocketmq.client.producer.DefaultMQProducer;import org.apache.rocketmq.client.producer.SendResult;import org.apache.rocketmq.common.UtilAll;import org.apache.rocketmq.common.message.Message;import org.apache.rocketmq.remoting.exception.RemotingException;public class ScheduledMessageProducer1 {    public static final String TOPIC_NAME = "ScheduledTopic";    public static void main(String[] args) throws MQClientException, InterruptedException, MQBrokerException, RemotingException {        DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");        // 填入连接地址        producer.setNamesrvAddr("192.168.0.1:8100");        //producer.setUseTLS(true);    //创建实例时,如果开启了SSL,请增加此行代码。        producer.start();        // 定时消息投递时间戳,该消息10秒后投递        final long deliverTimestamp = Instant.now().plusSeconds(10).toEpochMilli();        // 创建消息对象        Message msg = new Message(TOPIC_NAME,            "TagA",            "KEY",            "scheduled message".getBytes(StandardCharsets.UTF_8));        // 设置消息定时投递的时间戳属性        msg.putUserProperty("__STARTDELIVERTIME", String.valueOf(deliverTimestamp));        // 发送消息,该消息将会在10秒后投递        SendResult sendResult = producer.send(msg);        // 打印发送结果和预计投递时间        System.out.printf("%s %s%n", sendResult, UtilAll.timeMillisToHumanString2(deliverTimestamp));        producer.shutdown();    }}

support.huaweicloud.com/devg-hrm/hrm-devg-009.html