node.js - Rabbitmq 生产者 (symfony 3 ) 和消费者错误 ( NodeJs )

标签 node.js symfony docker rabbitmq

我用 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/

相关文章:

php - Symfony 4 登录时凭据无效

php - Doctrine2中的多对多关系导致迁移时出现重复错误

javascript - 如何将变量从路由传递到 server.js

node.js - 如何在 thenOpen 而不是未定义的 casper.js 中获取响应状态 404?

node.js - 当不同的服务都命名为 'server.js' 时,如何识别它们?

validation - 有没有办法在 Symfony 中验证 ISO8601 日期?

mysql - 哪个数据库引擎最适合 node.js 应用程序?

docker - 从yaml/compose文件将主机目录挂载到docker容器

Mongodb Docker - 创建初始用户并设置初始结构

postgresql - Docker exec - 无法使用环境变量调用 postgres