如何获取Azure队列消息的insertion_time?解决属性错误问题
解决Azure队列消息插入时间获取失败的问题
问题原因
你调用peek_messages()方法时,默认返回的QueueMessage对象不会携带插入时间这类元数据,必须显式指定要获取的消息属性,否则就会触发AttributeError。另外你的代码里存在拼写错误:get_queue_cliente应该是get_queue_client。
修正方案
调用peek_messages时,通过message_attributes参数指定要获取InsertionTime属性,之后从message.properties字典中提取插入时间值。
修正后的代码
queue_service = QueueServiceClient(storage_url, credential) queue_client = queue_service.get_queue_client(queue_name) # 修正拼写错误 # 指定要获取插入时间属性 messages = queue_client.peek_messages(message_attributes=['insertion_time']) if messages: for message in messages: # 从properties字典中获取插入时间 insertion_time = message.properties.get('insertion_time') print(insertion_time) else: print("Empty list")
补充说明
message_attributes参数接受一个列表,可指定的属性包括insertion_time、expiration_time、dequeue_count等- 获取到的
insertion_time是datetime对象,可直接用于计算消息停留时长(比如用当前时间减去插入时间)
内容的提问来源于stack exchange,提问作者Gabriel Fleming
相关产品推荐
相关产品推荐

