2013-12-17 4 views
9

대기열에서 메시지를 읽는 데 node.js amqp 모듈을 사용하고 있습니다. 다음은 대기열에서 사용 가능한 메시지가있을 때 호출되는 콜백입니다.node.js amqp 모듈을 사용할 때 AQMP 메시지 버퍼를 JSON 객체로 변환하는 방법은 무엇입니까?

function onMessage(message, headers, deliveryInfo) 
{ 
    console.log(message); //This prints buffer 
    //how to convert message (which I expect to be JSON) into a JSON object. 
    //Also how to get the JSON string from the 'message' which seems to be a buffer 
} 

감사합니다.

답변

11

message.data.toString()이 적절한 JSON 문자열을 반환했습니다.

+0

정답입니다. – Dunk

12

당신이 JSON을 포함하는 버퍼를받을 경우, 콘솔에 의미있는 출력 뭔가 문자열로 변환해야합니다 :

console.log(message.toString()) 

당신은 전체 자바 스크립트로 해당 문자열을 변환하려면 객체가 다음 바로 JSON을 구문 분석 :

var res = JSON.parse(message.toString()) 

편집 : 노드 AMQP는 (here 참조) 직접 자바 스크립트 객체를 보낼 수있을 것 같다, 당신은 버퍼 대신 자바 스크립트 객체를 수신하지 말아야 ... 첵 k 당신이 당신의 메시지를 보내는 방법.

+0

rabbitmq 콘솔에서 { "name": "anand"}로 메시지를 설정하면 console.log (message.toString())가 [object Object]를 인쇄하고 있습니다. –

+1

정상입니다. ['Object.toString()'의 문서] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)를 참조하십시오. 보시다시피, 표준 자바 스크립트 객체 (아마도'{name : "anand"}')를 받았고 버퍼는 아닙니다. 그렇다면'console.log (message)'가 출력하는 것은 무엇입니까? –

+3

message.data.toString()가 작동했습니다. –