【发布时间】:2021-03-15 17:21:50
【问题描述】:
我正在尝试将 RabbitMQ 消息从我的主机发送到部署了 RabbitMQ 集群的 Minikube 实例。
在运行我的发送脚本时,我遇到了这个错误:
Handshake terminated by server: 403 (ACCESS-REFUSED) with message "ACCESS_REFUSED - Login was refused
using authentication mechanism PLAIN. For details see the broker logfile.
在代理日志文件中,我可以看到这一行:
Error on AMQP connection <0.13226.0> (172.17.0.1:40157 -> 172.17.0.8:5672, state: starting):
PLAIN login refused: user 'rabbitmq-cluster-default-user' - invalid credentials
我确信我拥有正确的凭据,因为我是按照官方文档 (link) 直接从 RabbitMQ pod 获取的。
我的发送脚本如下:
const amqp = require('amqplib/callback_api');
const cluster = "amqp://rabbitmq-cluster-default-user:dJhLl2aVF78Gn07g2yGoRuwjXSc6tT11@192.168.49.2:30861";
amqp.connect(cluster, function(error0, connection)
{
if (error0)
{
throw error0;
}
connection.createChannel(function(error1, channel)
{
if (error1)
{
throw error1;
}
const queue = "files";
var msg = {
name: "Hello World"
};
var msgJson = JSON.stringify(msg);
channel.assertQueue(queue, {
durable: false
});
channel.sendToQueue(queue, Buffer.from(msgJson));
});
});
我知道代码有效,因为我为我的本地主机设置运行完全相同的脚本并且它有效。我唯一更改的是 URL(用于 Minikube RabbitMQ 服务)。
我看过一些其他包含类似问题的帖子,但大多数解决方案都是关于在 URI 中包含正确的凭据,我已经这样做了。
还有其他想法吗?
【问题讨论】:
标签: javascript kubernetes rabbitmq