2011-02-13 63 views
24

Tôi đang thua lỗ ở đây vì vậy tôi đang tiếp cận kiến ​​thức tập thể với hy vọng một phép lạ.RabbitMQ C# vấn đề kết nối khi sử dụng tên người dùng và mật khẩu

Tôi đã cài đặt RabbitMQ trên một hộp Linux bằng cách sử dụng các giá trị mặc định.

Khi tôi sử dụng mã này (và cấu hình cài đặt mặc định của RabbitMQ), mọi thứ đều hoạt động tốt.

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

Nhưng khi tôi thêm một người dùng để RabbitMQ và cố gắng sử dụng đoạn mã sau (tên đăng nhập và mật khẩu đã được thay đổi để bảo vệ người vô tội. :))

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

phương pháp connectionFactory.CreateConnection() ném sau ngoại lệ:

BrokerUnreachableException  
None of the specified endpoints were reachable 

Kiểm tra logfile RabbitMQ tôi có thể nhìn thấy nó phàn nàn về các chứng chỉ:

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

Điều là tôi tự tin về tên người dùng và mật khẩu và tôi không thể yêu thích mã hóa tìm giải pháp cho bất kỳ nơi đâu.

Tôi phải thiếu điều gì đó hiển nhiên nhưng tôi không thể hiểu được nó là gì. Tôi sẽ biết ơn đối với bất kỳ con trỏ hữu ích nào.

Trả lời

30

Dường như tôi đã tìm được giải pháp cho vấn đề của riêng mình. Mã sau đây hoạt động:

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

Cảm ơn bạn đã lắng nghe và có lẽ điều này ít nhất có thể hữu ích cho người khác. :)

+0

Hi! Tôi cũng đang cố thiết lập kết nối để gửi tin nhắn. Tôi đã tìm kiếm nhưng không hài lòng. Bạn có thể gợi ý cho tôi điều gì đó không. Điều đó, chúng ta cũng cần phải cài đặt máy chủ rabbitMQ trước khi sử dụng mã trên. Tôi đang sử dụng mã trên sau khi thêm tài liệu tham khảo của DLL do đó không có lỗi trong dự án nhưng nó stll cung cấp cho các ngoại lệ nói trên. Chúng ta cũng cần thêm một số thứ trong tệp WEB.Config. Hãy giúp tôi. Quan điểm của bạn sẽ thực sự giúp tôi – Prince

+0

Xin chào! Xin lỗi vì không trả lời trước đó. Tôi đã chơi với RabbitMQ chỉ trong một thời gian ngắn vì vậy tôi không có nhiều kinh nghiệm với nó. Tôi nhớ có một cá thể RabbitMQ chạy vì vậy bạn có thể cũng cần nó. Về tập tin web.config Tôi sợ tôi không biết nếu tôi đã từng sử dụng nó. – Freddy

+0

FWIW, các dòng nổi bật cho tôi đã đặt 'VirtualHost' và' Protocol'. –

4

Câu trả lời được chấp nhận không hoạt động đối với tôi (trên Windows).

tôi phải cài đặt các công cụ quản lý:

rabbitmq-plugins enable rabbitmq_management 

N.B. rabbitmq-plugins nằm trong C: \ Program Files (x86) \ RabbitMQ Server \ rabbitmq_server-3.3.1 \ sbin

Sau đó, khởi động lại dịch vụ RabbitMQ.

sau đó tôi cài đặt EasyNetQ trong Visual Studio trong quản lý gói:

install-package easynetq 

Với cài đặt này, tôi có thể sử dụng trang web quản trị web đặt tại:

http://localhost:15672 

N.B.Tên người dùng và mật khẩu mặc định là: khách

Từ đây, tôi chọn tab Quản trị và nguyên nhân rõ ràng đã được hiển thị bằng màu vàng ở phía trên cùng của màn hình:

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

Để khắc phục vấn đề tôi chỉ nhấn Đặt quyền nút trên cùng một màn hình et voila

NB để làm việc này, bạn cần phải thêm người dùng bằng cách sử dụng mật khẩu người dùng thỏmqctl add_user hoặc tương tự (rabbitmqctl cũng nằm trong thư mục ở trên).

3

Dưới đây là làm thế nào để tạo một người dùng gọi agent với mật khẩu agent, đặt nó vào được administrator và cung cấp cho nó readwrite quyền truy cập vào tất cả các hàng đợi trong vhost/

rabbitmqctl add_user agent agent 
rabbitmqctl set_user_tags agent administrator 
rabbitmqctl set_permissions -p/agent ".*" ".*" ".*" 
Các vấn đề liên quan