O cliente do Simple Message Queue (anteriormente MNS) oferece opções integradas de codificação Base64. Este tópico descreve os cenários em que você deve usar a codificação Base64 na produção e no consumo de mensagens.
Contexto
O Base64 converte dados binários em strings ASCII para garantir transferência segura em ambientes baseados em texto.
Vantagens da codificação Base64
Compatibilidade: Strings codificadas em Base64 usam apenas caracteres ASCII imprimíveis, o que as torna seguras para formatos baseados em texto, como e-mail, JSON e XML, sem risco de saída corrompida.
Segurança: O Base64 não é um método de criptografia, mas impede a leitura direta de dados binários em alguns formatos de texto simples, adicionando uma camada de proteção.
Simplicidade: A maioria das linguagens de programação e bibliotecas oferece suporte nativo ao Base64.
Desvantagens da codificação Base64
Aumento de dados: A codificação Base64 aumenta o tamanho dos dados em aproximadamente 33%.
Redução de eficiência: Codificar e decodificar exigem recursos computacionais adicionais. Essa sobrecarga de desempenho pode ser significativa, principalmente ao processar grandes volumes de dados.
Baixa legibilidade: Corpos de mensagem codificados não são legíveis por humanos.
Quando usar a codificação Base64
Modelo de mensagens baseado em fila
Ignore a codificação Base64 se o corpo da mensagem não contiver caracteres especiais.
Para enviar uma mensagem, chame o método
message.setMessageBodyAsRawString.Para receber uma mensagem, chame o método
message.getMessageBodyAsRawString.
Modelo baseado em tópico (assinatura de fila/HTTP)
No modelo baseado em tópico, a propriedade NotifyContentFormat da assinatura determina o formato da mensagem enviada: SIMPLIFIED, JSON ou XML, conforme descrito em Formatos de assinatura.
-
Formato SIMPLIFIED: Ignore a codificação Base64 se o corpo da mensagem não contiver caracteres especiais.
Para enviar uma mensagem, inicialize o objeto de mensagem com
RawTopicMessage.Para consumir uma mensagem, chame
message.getMessageBodyAsRawString().
-
Formato JSON ou XML: Use a codificação Base64, pois strings codificadas nesse padrão são adequadas para transferência em formatos de texto como JSON e XML.
Para enviar uma mensagem, inicialize o objeto de mensagem com TopicMessage. O sistema codifica o corpo automaticamente em Base64 e o insere no campo Message.
-
Para consumir uma mensagem, chame
message.getMessageBodyAsRawString();para obter o valor do campo Message e decodifique-o em Base64.JSONObject object = new JSONObject(message.getMessageBodyAsRawString()); String jsonMessageData = String.valueOf(object.get("Message")); String messageBody = new String(Base64.decodeBase64(jsonMessageData));
Modelo baseado em tópico (assinatura de e-mail)
Ignore a codificação Base64 se o corpo da mensagem não contiver caracteres especiais.
Para enviar uma mensagem, chame o método
message.setMessageBodyAsRawString.Para receber uma mensagem, chame o método
message.getMessageBodyAsRawString.
Modelo baseado em tópico (assinatura de mensagem de texto)
Ignore a codificação Base64 se o corpo da mensagem não contiver caracteres especiais.
Para enviar uma mensagem, chame o método
message.setMessageBodyAsRawString.Para receber uma mensagem, chame o método
message.getMessageBodyAsRawString.
Modelo baseado em tópico (assinatura de Mobile Push)
Ignore a codificação Base64 se o corpo da mensagem não contiver caracteres especiais.
Para enviar uma mensagem, chame o método
message.setMessageBodyAsRawString.Para receber uma mensagem, chame o método
message.getMessageBodyAsRawString.