2011-02-13 20 views
24

Estoy perdido aquí, así que estoy tratando de llegar al conocimiento colectivo con la esperanza de un milagro.RabbitMQ C# problemas de conexión al usar un nombre de usuario y contraseña

He instalado RabbitMQ en una caja Linux utilizando los valores predeterminados.

Cuando uso este código (y la configuración de instalación predeterminada de RabbitMQ) todo funciona bien.

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

Pero cuando agrego un usuario a RabbitMQ y tratar de usar el siguiente código (nombre de usuario y contraseña ha sido cambiado para proteger a los inocentes. :))

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

el método connectionFactory.CreateConnection() lanza la siguiente excepción:

BrokerUnreachableException  
None of the specified endpoints were reachable 

Comprobación del archivo de registro RabbitMQ puedo verlo quejándose de las credenciales:

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

Lo que pasa es que estoy seguro del nombre de usuario y la contraseña, y no puedo por amor a la codificación encontrar una solución para esto en cualquier lugar.

Me falta algo obvio, pero no puedo entender de qué se trata. Agradecería cualquier sugerencia útil.

Respuesta

30

Parece que he encontrado una solución a mi problema. El siguiente código funciona:

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

Gracias por su atención y tal vez esto, al menos, podría ser útil para otra persona. :)

+0

Hola! También estoy tratando de establecer una conexión para enviar mensajes. He buscado pero no estoy satisfecho. ¿Puedes por favor sugerirme algo? Eso, también necesitamos instalar el servidor rabbitMQ antes de usar el código anterior. Estoy utilizando el código anterior después de agregar la referencia de la DLL para que no haya ningún error en el proyecto, pero ofrece la excepción mencionada anteriormente. ¿También necesitamos agregar algunas cosas en el archivo WEB.Config? Por favor ayuda. Tu punto de vista realmente me ayudará – Prince

+0

¡Hola! Perdón por no haber respondido antes. Jugué con RabbitMQ por poco tiempo, así que no tengo mucha experiencia con eso. Recuerdo tener una instancia de RabbitMQ ejecutándose, así que probablemente también necesitarías eso. En cuanto al archivo web.config, me temo que no sé si alguna vez lo utilicé. – Freddy

+0

FWIW, las líneas principales para mí fueron la configuración de 'VirtualHost' y' Protocol'. –

4

La respuesta aceptada no funcionó para mí (en Windows).

He tenido que instalar las herramientas de gestión:

rabbitmq-plugins enable rabbitmq_management 

N. B. rabbitmq-plugins está en C: \ Archivos de programa (x86) \ Servidor RabbitMQ \ rabbitmq_server-3.3.1 \ sbin

Luego, reinicie el servicio RabbitMQ.

Luego instalado EasyNetQ en Visual Studio en el gestor de paquetes:

install-package easynetq 

Con esta instalado, podría usar el sitio web de administración se encuentra en:

http://localhost:15672 

N. B.El nombre de usuario y contraseña por defecto es invitado

Desde aquí, he seleccionado la pestaña de administración y la causa fue claramente muestran en amarillo en la parte superior de la pantalla:

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

Para solucionar el problema que acaba de pulsar el Establecer permiso botón en la misma pantalla et voila

NB para que esto haya funcionado, debe haber agregado el usuario usando rabbitmqctl add_user nombre de usuario contraseña o similar (rabbitmqctl también se encuentra en el directorio anterior).

3

Aquí es cómo crear un usuario llamado agentagent con contraseña, establece que sea administrator y darle read y write acceso a todas las colas en el host virtual/

rabbitmqctl add_user agent agent 
rabbitmqctl set_user_tags agent administrator 
rabbitmqctl set_permissions -p/agent ".*" ".*" ".*" 
Cuestiones relacionadas