輕量消息隊列(原 MNS)提供了批量發送和批量接收消息的接口,既大大提升了QPS,又降低了請求次數,節省了費用。
批量發送消息
BatchSendMessage
一次最多發送16條消息,所有消息的大小加起來,總和不能超過64 KB。
如果您不指定,那么默認消息會做Base64編碼(會放大原始消息體),所以實際發送的消息大小不要超過47 KB。
您也可以指定不使用Base64編碼,使用原始消息體:
message.setMessageBody("message_body", Message.MessageBodyType.RAW_STRING);
如果消息超過64 KB,請參見超大消息傳輸。
批量接收消息
BatchReceiveMessage
一次最多獲取16條消息,有時候明明有10條消息,一次BatchReceiveMessage
卻只能獲取5條消息。
例如:在一個隊列里順序發送了10條消息 ( m1, m2, m3, m4, m5, m6, m7, m8, m9, m10),第一次調用BatchReceiveMessage
時,接收了5條消息 (m2, m4, m6, m8, m10) ,第二次調用BatchReceiveMessage
,接收了余下的5條消息 (m1, m3, m5, m7, m9) 。
輕量消息隊列(原 MNS)是分多個”切片“存放數據的,批量的操作每次只會到一個“切片”上獲取數據,接收到數據后立刻返回,不會等到獲取到所有“切片”的數據后才返回。所以數據發送時在“切片”的分配情況就決定了每次批量獲取時返回的消息有哪些。所以輕量消息隊列(原 MNS)不保證消息順序。
文檔內容是否對您有幫助?