Je suis en dessous de l'exception
org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - La connexion a été refusée à l'aide du mécanisme d'authentification PLAIN. Pour plus de détails, consultez le fichier journal du courtier.
Configuration: RabbitMQ 3.3.5 sous Windows
Sur le fichier de configuration dans %APPDATA%\RabbitMQ\rabbit.config
j'ai fait ci-dessous le changement selon https://www.rabbitmq.com/access-control.html
[{rabbit, [{loopback_users, []}]}].
J'ai également essayé de créer un utilisateur / pwd - test / test ne semble pas le faire fonctionner.
J'ai essayé les étapes de ce post.
Les autres détails de configuration sont les suivants:
Contexte d'application Spring hébergé par 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>
Dans ma classe de contrôleur
@Autowired
RmqMessageSender rmqMessageSender;
//Inside a method
rmqMessageSender.submitToECLDown(orderInSession.getOrderNo());
Dans l'expéditeur de mon message:
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());
}
}
}
Au-dessus de l'exception Le bloc donne ci-dessous l'exception
org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - La connexion a été refusée à l'aide du mécanisme d'authentification PLAIN. Pour plus de détails, consultez le fichier journal du courtier.
Journal des erreurs
=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'}}
Veuillez trouver ci-dessous l'entrée 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>
S'il vous plaît laissez-moi savoir si vous avez des idées / suggestions
Réponses:
Je suis sûr que ce qu'Artem Bilan a expliqué ici pourrait être l'une des raisons de cette erreur:
mais la solution pour moi était que je me suis connecté à la page d'administration de rabbitMQ ( http: // localhost: 15672 / # / users ) avec le nom d'utilisateur et le mot de passe par défaut qui est guest / guest puis j'ai ajouté un nouvel utilisateur et pour ce nouvel utilisateur je a activé l'autorisation d'y accéder à partir de l'hôte virtuel, puis a utilisé le nouveau nom d'utilisateur et le mot de passe au lieu de l'invité par défaut, ce qui a effacé l'erreur.
la source
Pour répondre à @ cpu-100 ,
au cas où vous ne voudriez pas activer / utiliser l'interface Web, vous pouvez créer de nouvelles informations d'identification en utilisant la ligne de commande comme ci-dessous et l'utiliser dans votre code pour vous connecter à RabbitMQ.
la source
C'est vrai depuis RabbitMQ 3.3.x. Par conséquent, vous devez mettre à niveau vers la même version de la bibliothèque cliente, ou simplement mettre à niveau Spring AMQP vers la dernière version (si vous utilisez le système de gestion des dépendances).
Version précédente du client utilisée
127.0.0.1
comme valeur par défaut pour l'host
option deConnectionFactory
.la source
localhost
comme ceci:ConnectionFactory("localhost")
guest/guest
compte IP attribué à Azure fonctionne dans le monde entier! :(L'erreur
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
peut se produire si les informations d'identification que votre application tente d'utiliser pour se connecter à RabbitMQ sont incorrectes ou manquantes.
Cela s'est produit lorsque les informations d'identification RabbitMQ stockées dans le
web.config
fichier de mon application ASP.NET avaient une valeur de""
pour le mot de passe au lieu de la valeur de la chaîne de mot de passe réelle.la source
Pour autoriser l'accès invité à distance, écrivez ceci
jusqu'ici
puis redémarrez le service windows rabbitmq (Source https://www.rabbitmq.com/access-control.html )
la source
Pour moi, la solution était simple: le nom d'utilisateur est sensible à la casse. Ne pas utiliser les bouchons appropriés entraînera également l'erreur.
la source
Nouvelle solution:
Le module de nœud ne peut pas gérer
:
correctement un mot de passe. Même url encodée, comme cela fonctionnerait normalement, cela ne fonctionne pas.N'utilisez pas de caractères spéciaux typiques d'une URL dans le mot de passe!
Comme l'un des suivants:
: . ? + %
Original, mauvaise réponse:
Le message d'erreur se plaint clairement de l'utilisation
PLAIN
, cela ne signifie pas que les informations d'identification sont fausses, cela signifie que vous devez utiliser la livraison de données cryptées (TLS) au lieu du texte brut.Changer
amqp://
la chaîne de connexion enamqps://
(notez les
) résout ce problème.la source
ajoutez simplement le mot de passe de connexion pour vous connecter à RabbitMq
la source
si vous utilisez le numéro comme mot de passe, vous devriez peut-être essayer de changer votre mot de passe en utilisant une chaîne.
Je peux me connecter en utilisant deltaqin: 000000 sur le site Web, mais je l'ai eu lors de l'exécution du programme. puis changez le mot de passe en deltaiqn. et il fonctionne.
la source
J'ai fait exactement ce que @grepit a fait.
Mais j'ai dû faire quelques changements dans mon code Java:
Dans le projet Producer and Receiver, j'ai modifié:
Ce faisant, vous connectez un hôte spécifique en tant qu'utilisateur que vous avez créé. Ça marche pour moi!
la source
J'étais confronté à ce problème en raison d'un espace vide à la fin du mot de passe (spring.rabbitmq.password = rabbit) dans spring boot application.properties a été résolu en supprimant l'espace vide. J'espère que cette liste de contrôle aidera quelqu'un à faire face à ce problème.
la source
définir le nom d'hôte ConnectionFactory ou Connection sur localhost
la source