property 属性中增加 __STARTDELIVERTIME 属性值,就能在一定范围内(40天)实现该消息在任意时间的定时发送。延时消息则可以先通过计算得到定时发送的时间点,再以定时消息的形式发送。System.currentTimeMillis() + delayTime 计算得到定时发送的时间点,再以定时消息的方式发送。Message msg = new Message("test-topic", ("message content").getBytes(StandardCharsets.UTF_8));// 设定消息在10秒之后被发送long delayTime = System.currentTimeMillis() + 10000;// 将 __STARTDELIVERTIME 设定到 msg 的属性中msg.putUserProperty("__STARTDELIVERTIME", String.valueOf(delayTime));SendResult result = producer.send(msg);System.out.println("Send delay message: " + result);
Duration messageDelayTime = Duration.ofSeconds(10);final Message message = provider.newMessageBuilder()// Set topic for the current message..setTopic(topic)// Message secondary classifier of message besides topic..setTag(tag)// Key(s) of the message, another way to mark message besides message id..setKeys("yourMessageKey-3ee439f945d7")// Set expected delivery timestamp of message. 设置延迟消息的时间.setDeliveryTimestamp(System.currentTimeMillis() + messageDelayTime.toMillis()).setBody(body).build();
文档反馈