changeMessageVisibilitySeconds()
改变接收到的message的不可见时间
message被某一用户实例接收后,将在一段时间内变为不可见,以防止被反复接收
当不可见时间超时,且之间一直没有收到此message的删除请求,EMQ将认为这条message未被成功处理,且此次接收message的用户实例已变为不响应状态。因此EMQ会将message重新置为可见状态,以便此message被再次读取并成功处理
用户实例接收后message后,如果认为自已在设定的不可见时间内难以完成message处理,可以使用此方法延长不可见时间。新设置的不可见时间从server收到请求开始计算(而不是从message的接收时间开始计算)
除上述情景外,如果用户实例发现接收到的message自己无法处理,也可以将不可见时间设为0。此时,message将立刻变为可见,从而被再次读取
本方法设置不可见时间仅一次有效。如果不可见时间超时,message被再次读取,那么message的不可见时间将使用其原本的数值
方法参数ChangeMessageVisibilityRequest
queueName : String : required
receiptHandle : String : required
需改变不可见时间的message对应的receiptHandle
注意,此处不可使用messageID
invisibilitySeconds : int required
新设置的不可见时间,从server收到请求开始计算
方法返回void
changeMessageVisibilitySecondsBatch()
批量更改message的不可见时间
注意:此操作不具有原子性。可能部分message更改成功,部分失败
方法参数ChangeMessageVisibilityBatchRequest
queueName : String : required
changeMessageVisibilityRequestEntryList : List< ChangeMessageVisibilityBatchRequestEntry > : required
需改变不可见时间的message列表
ChangeMessageVisibilityBatchRequestEntry字段包括
- receiptHandle : String : required
- invisibilitySeconds : int : required
方法返回ChangeMessageVisibilityBatchResponse
successful : List< String >
成功的message的receiptHandle列表
failed : List< MessageBatchErrorEntry >
失败的message的receiptHandle列表及对应异常
MessageBatchErrorEntry类型的具体内容可参见sendMessageBatch()