Tôi mới sử dụng tính năng nhắn tin và hiện đang điều tra bằng cách sử dụng RabbitMQ như một phần kiến trúc hệ thống của chúng tôi để cung cấp dịch vụ nhắn tin giữa các dịch vụ khác nhau. Tôi đã hoạt động basic RabbitMQ example và có thể truyền tải tin nhắn văn bản cơ bản qua xe buýt. Có vẻ như EasyNetQ có thể chỉ đơn giản là một số phức tạp của việc sử dụng RabbitMQ, mặc dù tôi gặp một chút rắc rối khi nó hoạt động.Sử dụng EasyNetQ với RabbitMQ để xuất bản và nhận tin nhắn
Thay vì chỉ là một chuỗi, tôi muốn gửi một thông điệp cao cấp hơn đại diện bởi các lớp sau đây:
public class Message
{
public string Text { get; set; }
public int RandomNumber { get; set; }
public DateTime Date { get; set; }
}
Tôi đang cố gắng gửi thông điệp này bằng việc xuất bản nó vào hàng đợi, và sau đó đã người đăng ký nhặt nó lên khỏi hàng đợi. Mã của tôi là như sau:
Publisher
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
var message = new Message() { Text = "Hello World", RandomNumber = new Random().Next(1,100), Date = DateTime.Now };
bus.Publish<Message>(message);
}
Receiver
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe<Message>("test", m => Console.WriteLine(string.Format("Text: {0}, RandomNumber: {1}, Date: {2}", m.Text, m.RandomNumber, m.Date)));
}
Cả hai bên dường như kết nối, và nhà xuất bản báo cáo rằng thông điệp đã được công bố:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
DEBUG: Published UserQuery+Message:query_lzzfst, CorrelationId ec81fc89-4d60-4a8b-8ba2-7a6d0818d2ed
Các thuê bao đăng nhập như sau:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
Dường như các thuê bao là một trong hai không kết nối với một hàng đợi (hoặc hàng đợi đúng), hoặc có cái gì khác tôi cần phải làm để thực sự nhận được thông báo?
Cảm ơn Mike. Đã kết thúc việc tạo trình bao bọc tùy chỉnh để phục vụ nhu cầu của dự án của chúng tôi, nhưng sẽ theo dõi EasyNetQ để biết mọi cập nhật. – Mun