Je suis désemparé ici, donc je me tourne vers la connaissance collective dans l'espoir d'un miracle.
J'ai installé RabbitMQ sur une boîte Linux en utilisant les paramètres par défaut.
Lorsque j'utilise ce code (et la configuration d'installation par défaut de RabbitMQ), tout fonctionne bien.
var connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "192.168.0.12";
IConnection connection = connectionFactory.CreateConnection();
Mais lorsque j'ajoute un utilisateur à RabbitMQ et que j'essaie d'utiliser le code suivant (le nom d'utilisateur et le mot de passe ont été modifiés pour protéger les innocents. :))
var connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "192.168.0.12";
connectionFactory.UserName = "user";
connectionFactory.Password = "password";
IConnection connection = connectionFactory.CreateConnection();
la méthode connectionFactory.CreateConnection()
lève l'exception suivante:
BrokerUnreachableException
None of the specified endpoints were reachable
Vérification du fichier journal RabbitMQ Je peux le voir se plaindre des informations d'identification:
{amqp_error,access_refused,
"PLAIN login refused: user 'user' - invalid credentials",
'connection.start_ok'}}
Le fait est que je suis sûr du nom d'utilisateur et du mot de passe et que je ne peux pas, par amour du codage, trouver une solution à cela n'importe où.
Je dois manquer quelque chose d'évident mais je ne peux pas comprendre ce que c'est. Je serais reconnaissant pour tous les conseils utiles.
Il semble que j'ai trouvé une solution à mon propre problème. Le code suivant fonctionne:
ConnectionFactory factory = new ConnectionFactory();
factory.UserName = "user";
factory.Password = "password";
factory.VirtualHost = "/";
factory.Protocol = Protocols.FromEnvironment();
factory.HostName = "192.168.0.12";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
IConnection conn = factory.CreateConnection();
Merci d'avoir écouté et cela pourrait peut-être au moins être utile à quelqu'un d'autre. :)
Voici comment créer un utilisateur appelé agent
avec le mot de passe agent
, le définir sur administrator
et lui donner un accès read
et write
à toutes les files d'attente dans le vhost /
rabbitmqctl add_user agent agent
rabbitmqctl set_user_tags agent administrator
rabbitmqctl set_permissions -p / agent ".*" ".*" ".*"
La réponse acceptée n'a pas fonctionné pour moi (sous Windows).
J'ai dû installer les outils de gestion:
rabbitmq-plugins enable rabbitmq_management
N.B. rabbitmq-plugins se trouve dans C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.1\sbin
Ensuite, redémarrez le service RabbitMQ.
J'ai ensuite installé EasyNetQ dans Visual Studio dans le gestionnaire de packages:
install-package easynetq
Une fois installé, je pourrais utiliser le site Web d'administration situé à l'adresse suivante:
http://localhost:15672
N.B. Le nom d'utilisateur et le mot de passe par défaut sont: invité
De là, j'ai sélectionné l'onglet Admin et la cause était clairement affichée en jaune en haut de l'écran:
This user does not have permission to access any virtual hosts.
Use "Set Permission" below to grant permission to access virtual hosts.
Pour résoudre le problème, je viens d'appuyer sur le bouton Définir l'autorisation sur le même écran et le tour est joué
N.B. pour que cela fonctionne, vous devez avoir ajouté l'utilisateur en utilisant rabbitmqctl add_user username password ou similaire (rabbitmqctl est également dans le répertoire ci-dessus).