我正在使用node-amqp库连接到一个在线stomp服务,在我使用stomp-client之前,它连接得非常成功,但它不支持自动故障检测和重新连接,所以我想切换到node-amqp以获得更强大的支持。
var amqp = require('amqp');
var option = {
host: 'host'
, port: 61618
, login: 'my username'
, password: 'my password'
};
var implOpts = {
reconnect: true,
reconnectBackoffStrategy: 'exponential',
reconnectBackoffTime: 500
};
var connection = amqp.createConnection(option,implOpts);
connection.addListener('ready', function(){
console.log('ready connection ');
});
connection.on('error', function (error) {
console.log('Connection error' ,error);
});
connection.on('close', function () {
console.log('Connection close ');
});
主机名、密码、用户名和端口是正确的,并且在stomp-client库示例中正常工作。然而,通过使用上面的代码,我得到了一个错误,说连接错误{message: '连接结束:可能由于身份验证失败。'} 。我检查了代码,没有发现我的身份验证或代码有任何问题。
下面是stomp-client库中的工作代码。
var StompClient = require('stomp-client').StompClient;
var client = new StompClient('host', 61618, 'my username', 'my password', '1.0');
client.connect(function(sessionId) {
console.log('Trying to connect the real time service...');
});
谁能告诉我如何使用node-amqp连接stomp服务
不确定你是否找到了这个问题的答案,但我发现自己在这个问题上绞尽脑汁,并在谷歌搜索的顶部找到了这个问题,所以我想我应该分享我的发现:
快捷信息;
- RabbitMQ 3.5.6
- NodeJS 6.2.2
- amqplib 0.4.2
在挖掘之后,我在github上找到了这个项目,并在测试中找到了https://github.com/squaremo/amqp.node/blob/master/test/connect.js,其中有一个普通的身份验证示例。我发现关键是,您必须调用一个特殊函数来格式化凭证,然后将它们作为对象传递:
var credentials = require('amqplib/lib/credentials');
var options = {};
options.credentials = credentials.plain(configuration.rabbitmq.user, configuration.rabbitmq.pass);
amqp.connect(connstr, options ....
还提到将用户名和密码嵌入到URL中,即:
amqp://user:pass@server:port