2011-02-13 17 views
24

Sono in perdita qui, quindi sto raggiungendo la conoscenza collettiva nella speranza di un miracolo.RabbitMQ C# problema di connessione quando si utilizza un nome utente e una password

Ho installato RabbitMQ su una macchina Linux utilizzando i valori predefiniti.

Quando utilizzo questo codice (e la configurazione di installazione RabbitMQ predefinita) tutto funziona correttamente.

var connectionFactory = new ConnectionFactory(); 
connectionFactory.HostName = "192.168.0.12"; 
IConnection connection = connectionFactory.CreateConnection(); 

Ma quando aggiungo un utente di RabbitMQ e cerco di utilizzare il seguente codice (nome utente e password è stata cambiata per proteggere gli innocenti. :))

var connectionFactory = new ConnectionFactory(); 
connectionFactory.HostName = "192.168.0.12"; 
connectionFactory.UserName = "user"; 
connectionFactory.Password = "password"; 
IConnection connection = connectionFactory.CreateConnection(); 

il metodo connectionFactory.CreateConnection() genera la seguente eccezione:

BrokerUnreachableException  
None of the specified endpoints were reachable 

Controllo del file di log RabbitMQ posso vederlo lamentarsi le credenziali:

01.235.
{amqp_error,access_refused, 
"PLAIN login refused: user 'user' - invalid credentials", 
'connection.start_ok'}} 

Il fatto è che sono sicuro del nome utente e della password e non posso per amore della codifica trovare una soluzione a questo ovunque.

Mi manca qualcosa di ovvio ma non riesco a capire di cosa si tratta. Sarei grato per qualsiasi suggerimento utile.

risposta

30

Sembra che abbia trovato una soluzione al mio problema. Il seguente codice funziona:

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(); 

Grazie per l'ascolto e forse questo almeno potrebbe essere utile a qualcun altro. :)

+0

Hi! Sto anche cercando di stabilire una connessione per inviare messaggi. Ho cercato ma non soddisfatto. Puoi per favore suggerirmi qualcosa. Questo, abbiamo anche bisogno di installare il server rabbitMQ prima di utilizzare il codice sopra. Sto usando sopra il codice dopo aver aggiunto il riferimento della DLL quindi non ci sono errori nel progetto, ma stll dà l'eccezione di cui sopra. Dobbiamo anche aggiungere alcune cose nel file WEB.Config. Per favore aiuto. Il tuo punto di vista mi sarà di grande aiuto – Prince

+0

Ciao! Scusa per non aver risposto prima. Ho giocato con RabbitMQ solo per poco tempo, quindi non ho molta esperienza con esso. Ricordo di avere un'istanza RabbitMQ in esecuzione, quindi probabilmente avresti anche bisogno di quello. Per quanto riguarda il file web.config temo di non sapere se l'ho mai usato. – Freddy

+0

FWIW, le linee salienti per me stavano impostando 'VirtualHost' e' Protocol'. –

4

La risposta accettata non ha funzionato per me (su Windows).

ho dovuto installare gli strumenti di gestione:

rabbitmq-plugins enable rabbitmq_management 

N.B. rabbitmq-plugins è in C: \ Programmi (x86) \ RabbitMQ Server \ rabbitmq_server-3.3.1 \ sbin

Quindi, riavviare il servizio RabbitMQ.

Ho poi installato EasyNetQ in Visual Studio nel gestore di pacchetti:

install-package easynetq 

Con questa installazione, ho potuto utilizzare l'amministratore del sito Web all'indirizzo:

http://localhost:15672 

N.B.Il nome utente e la password di default è: ospite

Da qui, ho selezionato la scheda Amministrazione e la causa era chiaramente visibile in giallo nella parte superiore dello schermo:

This user does not have permission to access any virtual hosts. 
Use "Set Permission" below to grant permission to access virtual hosts. 

per risolvere il problema ho appena premuto il Imposta il permesso pulsante sullo stesso schermo et voil

NB per questo ha funzionato è necessario aver aggiunto l'utente usando rabbitmqctl nomeutente add_user username o simile (rabbitmqctl è anche nella directory sopra).

3

Ecco come creare un utente chiamato agent con la password agent, impostata per essere administrator e dare read e write l'accesso a tutte le code nel vhost/

rabbitmqctl add_user agent agent 
rabbitmqctl set_user_tags agent administrator 
rabbitmqctl set_permissions -p/agent ".*" ".*" ".*" 
Problemi correlati