- 文档首页
消息队列 RocketMQ版
SDK 参考
RocketMQ 4.x
Python SDK
顺序消息
顺序消息
消息队列 RocketMQ版提供顺序消息(FIFO 消息)供您使用。在顺序消息模型中,您需要严格按照顺序来发布和消费消息。本文提供使用 Python SDK 收发顺序消息的示例代码供您参考。
背景信息
顺序消息分为两类,全局顺序消息和分区顺序消息。区别仅为队列数量不同,代码没有区别。
- 对于指定的一个 Topic,所有消息的生产和消费需要遵循一定的顺序,消息的消费顺序必须和生产顺序一致,即需要严格的先入先出 FIFO(First In First Out)的顺序进行发布和消费。
- 对于指定的一个 Topic,其中每一个分区的消息生产与消费是有序的,同一个队列内的消息按照严格的 FIFO 顺序进行发布和订阅。消息投递到哪一个分区由消息的 Sharding Key 来进行区分。在 SDK 中可以通过指定 Sharding Key 和 MessageQueueSelector 回调函数来控制消息投递到哪个分区。
前提条件
- 已阅读参数说明,了解常用参数的配置方式与填写格式。
发送顺序消息
发送顺序消息的示例代码如下。
from rocketmq.client import Producer, Message
name_server_addr = "http://rocketmq-xxxxxxxx.rocketmq.ivolces.com:9876"
producer = Producer(producer_group)
producer.set_name_server_address(name_server_addr)
producer.set_session_credentials(access_key, access_secret, "")
msg.set_body("hello volcano engine")
ret = producer.send_orderly_with_sharding_key(msg, sharding_key)
print(ret.status, ret.msg_id, ret.offset)
订阅顺序消息
订阅顺序消息的示例代码如下。
说明
订阅顺序消息之前,需要在创建 RocketMQ Consumer 的时候配置 ConsumerOrder 为 true。
from rocketmq.client import PushConsumer, ConsumeStatus
name_server_addr = "http://rocketmq-xxxxxxxx.rocketmq.ivolces.com:9876"
return ConsumeStatus.CONSUME_SUCCESS
consumer = PushConsumer(group, orderly=True)
consumer.set_name_server_address(name_server_addr)
consumer.set_session_credentials(access_key, access_secret, "")
consumer.subscribe(topic, callback, tags)
最近更新时间:2025.07.09 16:22:42