返回介绍

1.7.2 接收 Message

发布于 2020-10-01 15:14:14 字数 6796 浏览 882 评论 0 收藏 0

从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项为死信列队独有

  1. senderId:发送此条message的用户的developerId
  2. messageLength:messageBody的长度
  3. md5OfBody:messageBody的MD5校验和
  4. sendTimestamp:message到达EMQ server的时间戳
  5. receiveTimestamp:此次接收,message离开EMQ server的时间戳
  6. firstReceiveTimestamp:此message第一次接收时,message离开EMQ server的时间戳
  7. receiveCount:标识此message一共被接收到的次数,包含本次接收。如果此值经常大于0,且非用户刻意,则应考虑加大invisibilitySeconds
  8. sourceQueueName:源Queue的名称
  9. sourceTag:消息在源Queue中被以该Tag接收后,达到重新驱动的条件死亡
  10. deadTimestamp:消息在源Queue中被宣布死亡(不会再从源Queue中被相应的Tag接收)的时间
  11. originalMessageID:消息原始的MessageID,即在源Queue中的MessageID
  12. originalReceiveCount:消息在原始的Queue中被receive过的次数
  13. topic:即Message的topic属性,详见TopicQueue
  14. priority: 消息的优先级,详见PriorityQueue
messageAttributes : Map< String, MessageAttribute >

sendMessage时附带的用户自定义属性,具体含义可参见sendMessage()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文