我用 symfony 3 创建了一个 Producer
生产者 Controller
class ProducerController extends Controller
{
/**
* @Route("/producer", name="producer")
*/
public function uploadAction(Request $request)
{
$userId = mt_rand(1, 1000000);
$message = \Swift_Message::newInstance()
->setSubject('Sujet de l\'email')
->setFrom('test@xxx.com')
->setTo('destinaire@xxx.com')
->setBody($this->renderView('index.html.twig', ['userId' =>$userId]), 'text/html');
$this->get('old_sound_rabbit_mq.message_producer')->publish(serialize($message));
return $this->render('welcome.html.twig', ['userId' => $userId]);
}
}
config.yml
old_sound_rabbit_mq:
connections:
default:
host: '192.168.99.10' # hostname and port of the rabbitmq server
port: 55672
user: 'user'
password: 'pass'
vhost: '/'
lazy: true # a lazy connection avoids unnecessary connections to the broker on every request
producers:
message:
connection: default # connects to the default connection configured above
exchange_options: {name: 'message', type: direct}
在我使用 symfony 创建消费者后,程序工作正常,但现在我想使用 NodeJs 创建这个消费者
NodeJ
消费者.js
var http = require('http'),
url = require('url'),
amqp = require('amqplib');
var rabbitMQ = amqp.createConnection({url: "amqp://user:pass@192.168.99.10:55672"},{defaultExchangeName: ''});
rabbitMQ.addListener('ready', function(){
var queue = rabbitMQ.queue('',{'exclusive':true}, function(q){
//get all messages for the rabbitExchange
q.bind('rabbitExchange','#');
console.log("inqueue")
// Receive messages
q.subscribe(function (message) {
// Print messages to stdout
console.log("received message");
console.log(message.data.toString());
});
});
});
package.json
{
"name": "amqp_queue-service",
"version": "1.0.0",
"description": "RabbitMQ amqp.node",
"main": "app.js",
"author": "",
"license": "MIT",
"dependencies": {
"amqplib": "^0.3.0",
"socket.io": "^1.7.2"
}
}
当我执行app.js时 它没有向我显示任何内容
当我执行consumer.js时 它向我展示了
var rabbitMQ = amqp.createConnection({url: "amqp://user:pass@192.168.99.10:55672"},{defaultExchangeName: ''});
^
TypeError: amqp.createConnection is not a function
at Object.<anonymous> (C:\Users\SOTHNYR\Desktop\NodeJS\consumer.js:7:21)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
最佳答案
我觉得应该是
varrabbitMQ = amqp.connect("amqp://user:pass@192.168.99.10:55672"});
来自:http://www.squaremobius.net/amqp.node/channel_api.html#connect
关于node.js - Rabbitmq 生产者 (symfony 3 ) 和消费者错误 ( NodeJs ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199907/