You need to enable JavaScript to run this app.
文档中心
消息队列 RocketMQ版

消息队列 RocketMQ版

复制全文
下载 pdf
Python SDK
延迟消息
复制全文
下载 pdf
延迟消息
本文提供使用 Python SDK 收发延迟消息的示例代码供您参考。​
发送延迟消息​
发送延迟消息需要在控制台创建延迟消息类型的 Topic,RocketMQ 5.x 版本支持任意精度的延迟消息,发送延迟消息的示例代码如下。​
​
import time​
from rocketmq import ClientConfiguration, Credentials, Message, Producer​
from datetime import datetime, timedelta​
​
if __name__ == '__main__':​
# 设置为您从火山引擎消息队列 RocketMQ版控制台获取的接入点信息,类似"{INSTANCE_ID}.rocketmq.ivolces.com:8080"。​
endpoints = "rocketmq-xxxxx:8080"​
# 根据实例支持的认证方式,填写对应的身份认证信息:​
# 密钥管理:第一个参数为 AccessKey ID,第二个参数为 AccessKey Secret。​
# 权限管理:第一个参数为 ACL 用户名,第二个参数为 ACL 密码。​
credentials = Credentials("xxxx", "xxxx")​
config = ClientConfiguration(endpoints, credentials)​
topic = "xxxx" # 已在控制台创建的延迟消息类型 Topic。​
producer = Producer(config, (topic,))​
​
try:​
producer.startup()​
try:​
msg = Message()​
msg.topic = topic​
msg.body = "hello, rocketmq.".encode('utf-8')​
msg.tag = "rocketmq-send-delay-message"​
msg.keys = "send_sync"​
# 设置消息的投递时间,此处示例为 30 秒后投递。​
msg.delivery_timestamp = int(time.mktime((datetime.now() + timedelta(seconds=30)).timetuple()))​
msg.add_property("send", "sync")​
res = producer.send(msg)​
print(f"{producer.__str__()} send message success. {res}")​
producer.shutdown()​
print(f"{producer.__str__()} shutdown.")​
except Exception as e:​
print(f"normal producer example raise exception: {e}")​
producer.shutdown()​
except Exception as e:​
print(f"{producer.__str__()} startup raise exception: {e}")​
producer.shutdown()​
​
订阅延迟消息​
延迟消息的订阅方式与普通消息一致,示例代码如下所示。​
​
from rocketmq import ClientConfiguration, Credentials, SimpleConsumer​
​
if __name__ == '__main__':​
# 设置为您从火山引擎消息队列 RocketMQ版控制台获取的接入点信息,类似"{INSTANCE_ID}.rocketmq.ivolces.com:8080"。​
endpoints = "rocketmq-xxxxx:8080"​
# 根据实例支持的认证方式,填写对应的身份认证信息:​
# 密钥管理:第一个参数为 AccessKey ID,第二个参数为 AccessKey Secret。​
# 权限管理:第一个参数为 ACL 用户名,第二个参数为 ACL 密码。​
credentials = Credentials("xxxx", "xxxx")​
config = ClientConfiguration(endpoints, credentials)​
topic = "xxxx" # 已在控制台创建的延迟消息类型 Topic。​
simple_consumer = SimpleConsumer(config, "groupName") # group name​
try:​
simple_consumer.startup()​
try:​
simple_consumer.subscribe(topic)​
# use tag filter​
# simple_consumer.subscribe(topic, FilterExpression("tag"))​
while True:​
try:​
messages = simple_consumer.receive(32, 15)​
if messages is not None:​
print(f"{simple_consumer.__str__()} receive {len(messages)} messages.")​
for msg in messages:​
simple_consumer.ack(msg)​
print(f"{simple_consumer.__str__()} ack message:[{msg.message_id}].")​
except Exception as e:​
print(f"receive or ack message raise exception: {e}")​
except Exception as e:​
print(f"{simple_consumer.__str__()} subscribe topic:{topic} raise exception: {e}")​
simple_consumer.shutdown()​
except Exception as e:​
print(f"{simple_consumer.__str__()} startup raise exception: {e}")​
simple_consumer.shutdown()​
​
​
最近更新时间:2026.08.26 15:19:56
这个页面对您有帮助吗?
有用
有用
无用
无用