Open JustJordanT opened 1 year ago
using MassTransit;
using System;
using System.Threading.Tasks;
namespace PizzaAPI
{
public class Program
{
static async Task Main(string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("rabbitmq://localhost");
cfg.ReceiveEndpoint("pizza_api_queue", ep =>
{
ep.Handler<OrderMessage>(async context =>
{
Console.WriteLine($"Received order for Pizza ID: {context.Message.PizzaId}");
// send message to kitchen api queue
var kitchenEndpoint = await context.GetSendEndpoint(new Uri("rabbitmq://localhost/kitchen_api_queue"));
await kitchenEndpoint.Send<OrderMessage>(new
{
OrderId = context.Message.OrderId,
PizzaId = context.Message.PizzaId
});
});
});
});
await bus.StartAsync();
Console.WriteLine("Pizza API is ready to receive orders");
Console.ReadLine();
}
}
public class OrderMessage
{
public int OrderId { get; set; }
public int PizzaId { get; set; }
}
}
using MassTransit;
using System;
using System.Threading.Tasks;
namespace KitchenAPI
{
public class Program
{
static async Task Main(string[] args)
{
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("rabbitmq://localhost");
cfg.ReceiveEndpoint("kitchen_api_queue", ep =>
{
ep.Handler<OrderMessage>(async context =>
{
Console.WriteLine($"Received order for Pizza ID: {context.Message.PizzaId}");
// simulate processing the order
await Task.Delay(1000);
// send order update message
var pizzaEndpoint = await context.GetSendEndpoint(new Uri("rabbitmq://localhost/pizza_api_queue"));
await pizzaEndpoint.Send<OrderUpdateMessage>(new
{
OrderId = context.Message.OrderId,
Status = "Processed"
});
});
});
});
await bus.StartAsync();
Console.WriteLine("Kitchen API is ready to process orders");
Console.ReadLine();
}
}
public class OrderMessage
{
public int OrderId { get; set; }
public int PizzaId { get; set; }
}
public class OrderUpdateMessage
{
public int OrderId { get; set; }
public string Status { get; set; }
}
}
Need to finish the integration of Rabbit MQ using MassTransit