Skip to main content
Version: 5.0

延迟消息发送

延时消息是指消息发送到Apache RocketMQ后,并不期望立马投递这条消息,而是延迟一定时间后才投递到Consumer进行消费。

Apache RocketMQ 一共支持18个等级的延迟投递,具体时间如下:

投递等级(delay level)延迟时间投递等级(delay level)延迟时间
11s106min
25s117min
310s128min
430s139min
51min1410min
62min1520min
73min1630min
84min171h
95min182h

延迟消息的示例代码如下:

public class ScheduledMessageProducer {    public static void main(String[] args) throws Exception {        // Instantiate a producer to send scheduled messages        DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup");        // Launch producer        producer.start();        int totalMessagesToSend = 100;        for (int i = 0; i < totalMessagesToSend; i++) {            Message message = new Message("TestTopic", ("Hello scheduled message " + i).getBytes());            // This message will be delivered to consumer 10 seconds later.            message.setDelayTimeLevel(3);            // Send the message            producer.send(message);        }                // Shutdown producer after use.        producer.shutdown();    }    }
tip

这里最重要的是message中设置延迟等级,例子中设置的等级是3,也就是发送者发送后,10s后消费者才能收到消息。