《Apache RocketMQ用户指南》官方文档
《Apache RocketMQ用户指南》之过滤消息示例
在本章节
什么是定时消息?
定时消息与正常消息的不同之处在于,它是在指定的时间后执行。
应用
启动消费者等待传入的订阅消息
01 | import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; |
02 | import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; |
03 | import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; |
04 | import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; |
05 | import org.apache.rocketmq.common.message.MessageExt; |
06 | import java.util.List; |
08 | public class ScheduledMessageConsumer { |
10 | public static void main(String[] args) throws Exception { |
12 | DefaultMQPushConsumer consumer = new DefaultMQPushConsumer( "ExampleConsumer" ); |
14 | consumer.subscribe( "TestTopic" , "*" ); |
16 | consumer.registerMessageListener( new MessageListenerConcurrently() { |
18 | public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> messages, ConsumeConcurrentlyContext context) { |
19 | for (MessageExt message : messages) { |
21 | System.out.println( "Receive message[msgId=" + message.getMsgId() + "] " |
22 | + (System.currentTimeMillis() - message.getStoreTimestamp()) + "ms later" ); |
24 | return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; |
2. 发送定时消息
01 | import org.apache.rocketmq.client.producer.DefaultMQProducer; |
02 | import org.apache.rocketmq.common.message.Message; |
04 | public class ScheduledMessageProducer { |
06 | public static void main(String[] args) throws Exception { |
08 | DefaultMQProducer producer = new DefaultMQProducer( "ExampleProducerGroup" ); |
11 | int totalMessagesToSend = 100 ; |
12 | for ( int i = 0 ; i < totalMessagesToSend; i++) { |
13 | Message message = new Message( "TestTopic" , ( "Hello scheduled message " + i).getBytes()); |
15 | message.setDelayTimeLevel( 3 ); |
17 | producer.send(message); |
3. 核实
您应该看到消息比其存储时间晚约10秒钟。
(全文完)
点击下方
阅读原文