- 1.2 EMQ简介
- 1.3 快速开始
- 1.3.1 集群信息
- 1.3.2 控制台管理示例
- 1.3.3 代码示例
- 1.3.4 SDK
- 1.4 基础知识
- 1.4.1 基本概念
- 1.4.2 消息状态和接收模型
- 1.5 常见问题
- 1.5.1 Queue
- 1.5.2 Message
- 1.5.3 常见异常
- 1.5.4 其他
- 1.6 Queue API
- 1.6.1 创建/删除/清理 Queue
- 1.6.2 设置 Queue 属性/配额
- 1.6.3 获取 Queue 信息
- 1.6.4 Queue 权限操作
- 1.6.5 拷贝 Queue 元数据
- 1.7 Message API
- 1.7.1 发送 Message
- 1.7.2 接收 Message
- 1.7.3 更改 Message 不可见时间
- 1.7.4 删除(ACK) Message
- 1.7.5 重新驱动 Message
- 1.7.6 查询 Message
- 1.7.7 直接删除 Message
- 1.8 报警/统计 API
- 1.8.1 设置/获取 用户联系/配额信息
- 1.8.2 添加/移除/获取 Queue 报警策略
- 1.8.3 设置/获取 Queue 每日消息统计
- 1.9 高级队列功能
- 1.9.1 多读者/Tag
- 1.9.1.1 模型介绍
- 1.9.1.2 相关API
- 1.9.2 死信队列
- 1.9.3 Topic Queue
- 1.9.4 Priority Queue
- 1.10 计费规则
- 1.11 新旧版认证迁移
1.7.2 接收 Message
从Queue中接收message
方法参数ReceiveMessageRequest
queueName : String : required
tagName : String : optional
指定接收请求对应的Tag 如果此值未设置,即从Queue的默认Tag接收
maxReceiveMessageNumber : int : optional
接收到的message的最大数量
当Queue中有message可读时,请求会立即返回。因此实际收到的message的数量总是小于等于此数值
如果在请求中未设置此参数,将使用Queue的参数
Queue中默认值:100
合法范围: [1, 100]
maxReceiveMessageWaitSeconds : int : optional
详见createQueue()
如果在请求中未设置此参数,将使用Queue的参数
Queue中默认值:0
合法范围: [0, 20]
attributeName : String : optional
attributeValue : MessageAttribute : optional
attributeName与attributeValue配合使用,可以在接收message时按message附带的自定义属性进行过滤(message的自定义属性在sendMessage()
时定义)
如果没有设定这两个参数,表示接收全部message
如果指定attributeName的同时,将attributeValue中的字段type设为"empty",表示接收所有包含attributeName(大小写敏感)属性的message
否则,只有那些attributeName,attributeValue.type,attributeValue.value同时匹配的message才会被接收
(MessageAttribute类型的具体字段请参见sendMessage()
)
注: 用户在createTag()
时也可类似地指定过滤条件。二者的区别请参见FAQ。
方法返回List< ReceiveMessageResponse >
返回的message列表。其中ReceiveMessageResponse具体包括:
messageID : String
message标识符,与sendMessage的返回值相对应
receiptHandle : String
接收句柄,用以改变收到的message的不可见时间或删除message
接收到的message在使用后未即时删除,将重新变为可读并被再次接收。此时,两次接收到的messageID相同,但receiptHandle不同
messageBody : String
消息体
attributes : Map< String, String >
message的meta属性,包含以下内容中的某些项
注 8~12项为死信列队独有
- senderId:发送此条message的用户的developerId
- messageLength:messageBody的长度
- md5OfBody:messageBody的MD5校验和
- sendTimestamp:message到达EMQ server的时间戳
- receiveTimestamp:此次接收,message离开EMQ server的时间戳
- firstReceiveTimestamp:此message第一次接收时,message离开EMQ server的时间戳
- receiveCount:标识此message一共被接收到的次数,包含本次接收。如果此值经常大于0,且非用户刻意,则应考虑加大invisibilitySeconds
- sourceQueueName:源Queue的名称
- sourceTag:消息在源Queue中被以该Tag接收后,达到重新驱动的条件死亡
- deadTimestamp:消息在源Queue中被宣布死亡(不会再从源Queue中被相应的Tag接收)的时间
- originalMessageID:消息原始的MessageID,即在源Queue中的MessageID
- originalReceiveCount:消息在原始的Queue中被receive过的次数
- topic:即Message的topic属性,详见TopicQueue
- priority: 消息的优先级,详见PriorityQueue
messageAttributes : Map< String, MessageAttribute >
sendMessage时附带的用户自定义属性,具体含义可参见sendMessage()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论