輕量訊息佇列(原 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)不保證訊息順序。
如果您要求訊息順序必須先進先出,需要在應用程式層面解決,請參見嚴格保序隊列。