Mi Galaxy EMQ Book

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字段包括

  1. receiptHandle : String : required
  2. invisibilitySeconds : int : required

方法返回ChangeMessageVisibilityBatchResponse

successful : List< String >

成功的message的receiptHandle列表

failed : List< MessageBatchErrorEntry >

失败的message的receiptHandle列表及对应异常
MessageBatchErrorEntry类型的具体内容可参见sendMessageBatch()