Estou ficando abaixo da exceção
org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - O login foi recusado usando o mecanismo de autenticação PLAIN. Para obter detalhes, consulte o arquivo de log do broker.
Configuração: RabbitMQ 3.3.5 no Windows
No arquivo de configuração %APPDATA%\RabbitMQ\rabbit.config
, fiz as alterações abaixo de acordo com https://www.rabbitmq.com/access-control.html
[{rabbit, [{loopback_users, []}]}].
Eu também tentei criar um usuário / pwd - test / test não parece funcionar.
Tentei as etapas deste post.
Outros detalhes de configuração são os seguintes:
Contexto do aplicativo Spring hospedado por Tomcat:
<!-- 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>
Na minha classe de controlador
@Autowired
RmqMessageSender rmqMessageSender;
//Inside a method
rmqMessageSender.submitToECLDown(orderInSession.getOrderNo());
Em minha mensagem remetente:
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());
}
}
}
O bloco da exceção acima fornece a exceção abaixo
org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - O login foi recusado usando o mecanismo de autenticação PLAIN. Para obter detalhes, consulte o arquivo de log do broker.
Log de Erros
=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'}}
Por favor, encontre abaixo a entrada 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>
Por favor, deixe-me saber se você tem alguma opinião / sugestão
fonte
Respostas:
Tenho certeza de que o que Artem Bilan explicou aqui pode ser um dos motivos para esse erro:
mas a solução para mim foi fazer o login na página de administração do rabbitMQ ( http: // localhost: 15672 / # / users ) com o nome de usuário e senha padrão que é convidado / convidado, em seguida, adicionei um novo usuário e para esse novo usuário I habilitou a permissão para acessá-lo do host virtual e, em seguida, usou o novo nome de usuário e senha em vez do convidado padrão e isso eliminou o erro.
fonte
Para completar a resposta @ cpu-100 ,
caso você não queira habilitar / usar a interface web, você pode criar uma nova credencial usando a linha de comando como abaixo e usá-la em seu código para se conectar ao RabbitMQ.
fonte
Isso é verdade desde RabbitMQ 3.3.x. Portanto, você deve atualizar para a mesma versão da biblioteca do cliente ou apenas atualizar Spring AMQP para a versão mais recente (se você usar o sistema de gerenciamento de dependências).
A versão anterior do cliente usada
127.0.0.1
como valor padrão para ahost
opção deConnectionFactory
.fonte
localhost
forma:ConnectionFactory("localhost")
guest/guest
conta de ip atribuída azure funciona globalmente! :(O erro
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
pode ocorrer se as credenciais que seu aplicativo está tentando usar para se conectar ao RabbitMQ estiverem incorretas ou ausentes.
Isso aconteceu quando as credenciais RabbitMQ armazenadas no
web.config
arquivo do meu aplicativo ASP.NET tinham um valor de""
para a senha em vez do valor real da string da senha.fonte
Para permitir o acesso de convidados remotamente, escreva
para aqui
em seguida, reinicie o serviço do windows rabbitmq (fonte https://www.rabbitmq.com/access-control.html )
fonte
Para mim, a solução era simples: o nome de usuário diferencia maiúsculas de minúsculas. Deixar de usar as tampas corretas também levará ao erro.
fonte
Nova solução:
O módulo de nó não pode lidar
:
com uma senha corretamente. Mesmo url codificado, como funcionaria normalmente, não funciona.Não use caracteres especiais típicos de um URL na senha!
Como um dos seguintes:
: . ? + %
Original, resposta errada:
A mensagem de erro claramente reclama sobre o uso
PLAIN
, isso não significa que as credenciais estão erradas, significa que você deve usar entrega de dados criptografados (TLS) em vez de texto simples.Alterar
amqp://
a string de conexão paraamqps://
(observe os
) resolve isso.fonte
basta adicionar a senha de login para se conectar ao RabbitMq
fonte
se você usar o número como sua senha, talvez você deva tentar alterar sua senha usando string.
Posso fazer o login usando deltaqin: 000000 no site, mas fiz isso durante a execução do programa. em seguida, altere a senha para deltaiqn. e funciona.
fonte
Fiz exatamente o que @grepit fez.
Mas eu tive que fazer algumas mudanças no meu código Java:
No projeto Produtor e Receptor, alterei:
Fazendo isso, você está conectando um host específico como o usuário que você criou. Funciona para mim!
fonte
Eu estava enfrentando esse problema devido ao espaço vazio no final da senha (spring.rabbitmq.password = rabbit) no spring boot application.properties foi resolvido na remoção do espaço vazio. Espero que esta lista de verificação ajude alguém a enfrentar esse problema.
fonte
definir ConnectionFactory ou Connection hostname para localhost
fonte