全部產品
Search
文件中心

:輕量訊息佇列(原 MNS)訊息大量操作注意事項

更新時間:Sep 03, 2024

輕量訊息佇列(原 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)不保證訊息順序。

    如果您要求訊息順序必須先進先出,需要在應用程式層面解決,請參見嚴格保序隊列