春季AMQP+;RabbitMQ 3.3.5访问被拒绝-使用普通身份验证机制拒绝登录
我越来越不正常了 org.springframework.amqp.amqauthenticationexception:com.rabbitmq.client.AuthenticationFailureException:ACCESS\u拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件 配置:windows上的RabbitMQ 3.3.5 在春季AMQP+;RabbitMQ 3.3.5访问被拒绝-使用普通身份验证机制拒绝登录,rabbitmq,spring-integration,spring-amqp,Rabbitmq,Spring Integration,Spring Amqp,我越来越不正常了 org.springframework.amqp.amqauthenticationexception:com.rabbitmq.client.AuthenticationFailureException:ACCESS\u拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件 配置:windows上的RabbitMQ 3.3.5 在%APPDATA%\RabbitMQ\rabbit.Config中的配置文件上 我已经按照以下要求做了更改 我还尝试创建一个user/
%APPDATA%\RabbitMQ\rabbit.Config中的配置文件上
我已经按照以下要求做了更改
我还尝试创建一个user/pwd-test/test,但它似乎不起作用
从柱子上试过台阶
其他配置详细信息如下:
Tomcat托管的Spring应用程序上下文:
<!-- Rabbit MQ configuration Start -->
<!-- Connection Factory -->
<rabbit:connection-factory id="rabbitConnFactory" virtual-host="/" username="guest" password="guest" port="5672"/>
<!-- Spring AMQP Template -->
<rabbit:template id="rabbitTemplate" connection-factory="rabbitConnFactory" routing-key="ecl.down.queue" queue="ecl.down.queue" />
<!-- Spring AMQP Admin -->
<rabbit:admin id="admin" connection-factory="rabbitConnFactory"/>
<rabbit:queue id="ecl.down.queue" name="ecl.down.queue" />
<rabbit:direct-exchange name="ecl.down.exchange">
<rabbit:bindings>
<rabbit:binding key="ecl.down.key" queue="ecl.down.queue"/>
</rabbit:bindings>
</rabbit:direct-exchange>
在我的邮件发件人中:
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("messageSender")
public class RmqMessageSender {
@Autowired
AmqpTemplate rabbitTemplate;
public void submitToRMQ(String orderId){
try{
rabbitTemplate.convertAndSend("Hello World");
} catch (Exception e){
LOGGER.error(e.getMessage());
}
}
}
上面的异常块给出下面的异常
org.springframework.amqp.amqauthenticationexception:com.rabbitmq.client.AuthenticationFailureException:ACCESS\u拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件
错误日志
=ERROR REPORT==== 7-Nov-2014::18:04:37 ===
closing AMQP connection <0.489.0> (10.1.XX.2XX:52298 -> 10.1.XX.2XX:5672):
{handshake_error,starting,0,
{amqp_error,access_refused,
"PLAIN login refused: user 'guest' can only connect via localhost",
'connection.start_ok'}}
=错误报告===2014年11月7日::18:04:37===
关闭AMQP连接(10.1.XX.2XX:52298->10.1.XX.2XX:5672):
{握手错误,开始,0,
{amqp_错误,访问被拒绝,
“普通登录被拒绝:用户‘guest’只能通过localhost连接”,
'connection.start_ok'}
请在pom.xml条目下方找到
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
org.springframework.amqp
春兔
1.3.6.1发布
org.springframework.integration
spring集成amqp
4.0.4.1发布
如果您有任何想法/建议,请告诉我
用户“来宾”只能通过本地主机连接
这是真实的,因为RabbitMQ 3.3.x。因此,您应该将客户端库升级到同一版本,或者仅将Spring AMQP升级到最新版本(如果您使用依赖关系管理系统)
以前版本的客户端使用了127.0.0.1
作为ConnectionFactory
的host
选项的默认值,我确信Artem Bilan所解释的可能是导致此错误的原因之一:
但我的解决方案是,我使用默认用户名和密码(guest/guest)登录rabbitMQ管理页面(),然后添加一个新用户,对于该新用户,我启用了从虚拟主机访问它的权限,然后使用新用户名和密码,而不是默认的guest,并清除了错误
错误
访问被拒绝-使用普通身份验证机制拒绝登录。有关详细信息,请参阅代理日志文件。
如果应用程序尝试用于连接RabbitMQ的凭据不正确或丢失,则可能发生此情况
当存储在我的ASP.NET应用程序的web.config
文件中的RabbitMQ凭据的密码值为”
,而不是实际的密码字符串值时,就会发生这种情况。要允许来宾远程访问,请编写以下命令
[{rabbit, [{loopback_users, []}]}].
到这里
c:\Users\[your user name]\AppData\Roaming\RabbitMQ\rabbitmq.config
然后重新启动rabbitmq windows服务(源)以完成@cpu-100
如果您不想启用/使用web界面,可以使用如下命令行创建新凭据,并在代码中使用它连接到RabbitMQ
$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"
新解决方案:
节点模块无法正确处理密码中的:
。即使url编码,就像它正常工作一样,它也不工作
密码中不要使用URL中的典型特殊字符强>
与以下内容类似::.?+%代码>
原始错误答案:
错误消息明确地抱怨使用了纯文本
,这并不意味着凭据错误,而是意味着必须使用加密数据传递(TLS)而不是纯文本
将连接字符串中的amqp://
更改为amqps://
(注意s
)可以解决此问题。将ConnectionFactory或连接主机名设置为localhost对我来说,解决方案很简单:用户名区分大小写。未能使用正确的CAP也将导致错误。只需添加登录密码即可连接到RabbitMq
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("rabbit_host");
connectionFactory.setUsername("login");
connectionFactory.setPassword("password");
如果您使用该号码作为密码,可能应该尝试使用字符串更改密码
我可以在网站上使用deltaqin:000000登录,但在运行程序时有此功能。然后将密码更改为deltaiqn。它是有效的。我做的正是@grepit做的
但我不得不在Java代码中做一些更改:
在生产者和接受者项目中,我改变了:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("your-host-ip");
factory.setUsername("username-you-created");
factory.setPassword("username-password");
执行此操作时,您将以所创建的用户身份连接特定主机。
这对我有用 由于spring boot application.properties中密码(spring.rabbitmq.password=rabbit)末尾的空白,我遇到了这个问题。删除空白后,属性得到了解决。希望这个清单能帮助一些面临这个问题的人。在本地主机上,默认情况下使用'amqp://guest:guest@本地主机:5672'
因此,在远程或托管RabbitMQ上。假设您具有以下凭据
用户名:尼斯男孩
密码:notnice
主持人:goxha.com
港口:1597
那么您应该传递的uri将是
amqp://niceboy:notnice@goxha.com:1597
遵循模板amqp://user:pass@主持人:10000
如果你有vhost,你可以amqp://user:pass@主机:10000/vhost,其中尾随vhost将是您的vhost的名称请确保您编辑的配置已加载。zaq178迈阿密,我已经完成了几个步骤来确保其已加载。重新启动服务,重新启动机器&甚至重新安装RabbitMQ.Hi Artem,我已经为jar版本添加了pom.xml条目。理想情况下,我不想使用来宾用户名和密码。您能告诉我您是否有任何指针可供产品使用吗
$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("rabbit_host");
connectionFactory.setUsername("login");
connectionFactory.setPassword("password");
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("your-host-ip");
factory.setUsername("username-you-created");
factory.setPassword("username-password");