Saltar al contenido

RabbitMQ: envía un mensaje JSON

Solución:

De los documentos oficiales:

Los mensajes AMQP también tienen una carga útil (los datos que transportan), que los agentes de AMQP tratan como una matriz de bytes opaca. El corredor no inspeccionará ni modificará la carga útil. Es posible que los mensajes solo contengan atributos y no contengan carga útil. Es común utilizar formatos de serialización como JSON, Thrift, Protocol Buffers y MessagePack para serializar datos estructurados con el fin de publicarlos como carga útil del mensaje. Los pares de AMQP suelen utilizar los campos “tipo de contenido” y “codificación de contenido” para comunicar esta información, pero esto es solo por convención.

Entonces, básicamente, RabbitMQ no tiene conocimiento sobre JSON, todos los mensajes son solo matrices de bytes.

De NodeJS Contexto:


Si queremos enviar un objeto JSON como mensaje, es posible que obtengamos el siguiente error:

El primer argumento debe ser de tipo cadena o una instancia de Buffer, ArrayBuffer o Array o un objeto tipo Array. Recibió una instancia de Object

Entonces, podemos convertir la carga útil JSON como una cadena y analizarla en el trabajador. Cadenaizamos el objeto JSON antes de enviar los datos a la cola.

let payloadAsString = JSON.stringify(payload);

Y desde el final del trabajador, podemos JSON.parse

let payload = JSON.parse(msg.content.toString());
//then access the object as we normally do, i.e. :
let id = payload.id;
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *