Soy nuevo en la mensajería, y actualmente estoy investigando usando RabbitMQ como parte de la arquitectura de nuestro sistema para proporcionar mensajes entre diferentes servicios. Tengo un basic RabbitMQ example funcionando y puede transmitir un mensaje de texto básico sobre el bus. Parece que EasyNetQ podría ser simplemente parte de la complejidad del uso de RabbitMQ, aunque estoy teniendo un pequeño problema para hacerlo funcionar.Uso de EasyNetQ con RabbitMQ para publicar y recibir mensajes
En lugar de sólo una cadena, me gustaría enviar un mensaje más avanzado representado por la clase siguiente:
public class Message
{
public string Text { get; set; }
public int RandomNumber { get; set; }
public DateTime Date { get; set; }
}
Estoy intentando enviar esta mediante su publicación a la cola, y luego he el suscriptor lo recoge de la cola. Mi código es el siguiente:
Editorial
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);
}
receptor
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)));
}
Ambas partes parecen conectar, y el editor informa que el mensaje fue publicado:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
DEBUG: Published UserQuery+Message:query_lzzfst, CorrelationId ec81fc89-4d60-4a8b-8ba2-7a6d0818d2ed
El abonado registra el siguiente:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
Parece que el abonado es o no conectar a una cola (o la cola correcta), o hay algo más que tenga que hacer para recibir el mensaje en realidad?
Gracias Mike. Terminó creando un contenedor personalizado para atender las necesidades de nuestro proyecto, pero mantendrá a EasyNetQ atento a cualquier actualización. – Mun