Simple Message Queue (SMQ, formerly MNS) oferece APIs para envio e recebimento de mensagens em lotes. Isso reduz custos, pois as APIs processam mais consultas por segundo (QPS) com menos requisições.
Envio de mensagens em lote
A API BatchSendMessage envia até 16 mensagens por vez, desde que o tamanho total não ultrapasse 64 KB.
Por padrão, as mensagens usam codificação Base64. Como o corpo da mensagem codificado em Base64 é maior que o original, o tamanho total das mensagens originais não pode exceder 47 KB.
-
Alternativamente, execute o comando abaixo para enviar o corpo original da mensagem:
message.setMessageBody("message_body", Message.MessageBodyType.RAW_STRING); Para enviar uma mensagem maior que 64 KB, consulte Transmitir mensagens muito grandes.
Recebimento de mensagens em lote
A API BatchReceiveMessage recebe até 16 mensagens por vez. No entanto, em alguns casos, a quantidade de mensagens recebidas é menor que o número de mensagens disponíveis, mesmo sem atingir o limite máximo.
Suponha que 10 mensagens (m1, m2, m3, m4, m5, m6, m7, m8, m9 e m10) sejam enviadas em ordem. Na primeira chamada à API BatchReceiveMessage, você recebe apenas cinco mensagens (m2, m4, m6, m8 e m10). Já na segunda chamada à API BatchReceiveMessage, você recebe as outras cinco mensagens (m1, m3, m5, m7 e m9).
Isso ocorre porque o SMQ armazena dados em vários nós, mas cada operação em lote obtém dados de apenas um único nó, e não de todos simultaneamente. Portanto, as mensagens recebidas em cada lote dependem do nó de armazenamento e podem não seguir a ordem original.