2017-03-24 1 views
0

MQTT를 배우고 MQTT와 RabbitMQ를 이해하는 데 문제가 있음 (http://blog.airasoul.io/the-internet-of-things-with-rabbitmq-node-js-mqtt-and-amqp/).게시 후 메시지를받을 수 없습니다. RABBITMQ MQTT

여기 게시자 코드를 실행하면 대기열에 mqtt-subscription-test-qos1이 추가되지만 메시지가 해당 대기열에 추가되지 않습니다. amq.topic의 바인딩을 키 바인딩 'presence'가있는이 큐에 추가했지만.

이 내 게시자 코드

아래
var payload = { 
    message : 'Hello' 
}; 

var client = mqtt.connect(url, { clientId: 'test-', clean:true}); 

client.on('connect', function() { 

    client.publish('presence', JSON.stringify(payload), { qos: 1 }, function() { 
    console.log("Sent"); 
    client.end(); 
    process.exit(); 
    }); 
}); 

내 가입자 코드입니다.

var client = mqtt.connect(url, { clientId: 'test-', clean:true}); 

client.on('connect', function() { 
    client.subscribe('presence', { qos: 1 }); 
}); 

client.on('message', function (topic, message) { 
    console.log('received message ', message.toString()); 
}); 

게시자 코드에서 연결 기능을 사용하는 옵션을 선언하지 않을 때 작동합니다. 그래서 내가 얻지 못하는 것은 게시자가 대기열을 생성 한 다음 주제에 게시해야한다는 것입니다.

내가 뭘 잘못하고 있니?

+0

publish 콜백에서 'client.end' 및'process.exit' 호출을 제거하면 작동합니까? – hardillb

답변

0

주제에 게시하기 전에 대기열을 만들 필요가 없습니다. 첫 x 째 MQTT 메시지를 공개하면 대기 행렬은 기본 교환 이름 "amq.topic"과 주제 키와 동일한 Y 인딩 키를 사용하여 자동으로 작성됩니다.

게시자가 메시지를 게시 한 후 게시자가 메시지를 게시하고 구독하기 때문에 구독자가 게시 된 메시지를받지 못하는 것 같습니다. 구독자를 먼저 시작한 다음 게시자를 시작하십시오.

관련 문제