如何在nodejs中验证rabbitmq?

Posted

技术标签:

【中文标题】如何在nodejs中验证rabbitmq?【英文标题】:How to authenticate rabbitmq in nodejs? 【发布时间】:2018-12-19 01:56:40 【问题描述】:

错误:握手被服务器终止:403 (ACCESS-REFUSED) 并显示消息“ACCESS_REFUSED - 使用 authen 拒绝登录 阳离子机制平原。有关详细信息,请参阅代理日志文件。” 我单独尝试了 authMechanism('PLAIN'、'AMQPLAIN'、'EXTERNAL'),但我遇到了同样的错误。 无法与 rabbitMQ 建立连接

var raabitmqSettings = 
    protocol: 'amqp',
    hostname: '10.250.18.31',
    port: 5672,
    username: 'sam',
    password: 'sam@123',     
    vhost: '/',
    authMechanism: ['PLAIN', 'AMQPLAIN', 'EXTERNAL']


amqp.connect(raabitmqSettings, function(err, conn) 
    conn.createChannel(function(err, ch) 
         console.log("\n\n" + ch);
       

我在哪里可以看到 rabbit mq 中的日志文件或如何在 rabbitMQ 中启用日志?

创建连接的方法是否正确? rabbitMQ服务器有什么设置吗?

【问题讨论】:

你检查过 RabbitMQ 日志吗?您是否创建了sam 用户? rabbitmqctl authenticate_user sam 'sam@123'的输出是什么 这个工作正常:var open = amqp.connect(raabitmqSettings); open.then(function(conn) console.log(conn); ).then(null, console.warn);但我想写异步并等待乐趣@LukeBakken - 谢谢 这更像是一个 javascript 问题,而不是特定于 RabbitMQ 或 javascript 客户端的问题。既然您的连接似乎正常工作,您应该编辑您的原始问题以反映您实际需要帮助的内容。 这段代码运行良好:var sender = async function(setting) const open = await amqp.connect(setting); await ch.assertExchange("ExchangeName", "direct"); var q = 'QueueName'; var msg = 'Hello World'; ch.assertQueue(q, durable: true ); ch.sendToQueue(q, new Buffer(obj)); console.log(" [x] Sent %s", msg); 谢谢@LukeBakken 【参考方案1】:

在接收端使用以下代码

const open = await amqp.connect(setting);        
    var ch = await open.createChannel();
    await ch.assertExchange("cronService", "direct");
    var q = 'CronQueue';
    ch.assertQueue(q,  durable: true );
    ch.consume(q, async function(msg)             
        console.log(" [x] Received %s", msg.content.toString());            
    ,  noAck: true );
    return something;

【讨论】:

以上是关于如何在nodejs中验证rabbitmq?的主要内容,如果未能解决你的问题,请参考以下文章

使用 NodeJS 将 RabbitMQ 导入 AWS Redshift

如何在 NodeJs 中使用 .pfx 证书和密码验证 Bearer 令牌?

如何在 NodeJS 中使用 JWT 令牌验证路由

如何在 React/NodeJS 身份验证流程中使用 httpOnly cookie 获取用户数据

我应该如何在 javascript 或 nodeJs 中验证电子邮件地址是不是存在和域名是不是存在?

如何在 NodeJS 上验证 AWS Cognito 访问令牌