This is my mass transit configuration in Program.cs:
builder.Services.AddMassTransit(x =>
{
x.UsingRabbitMq((context,cfg) =>
{
cfg.Message<IOrder>(f => f.SetEntityName("new-order"));
cfg.ReceiveEndpoint("new-order", f =>
{
f.Consumer<ConsumeNewOrder>();
});
});
});
builder.Services.AddHostedService<Worker>();
Background service, which publishes new messages in a new-order queue:
public class Worker : BackgroundService
{
readonly IBus _bus;
public Worker(IBus bus)
{
_bus = bus;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while(!stoppingToken.IsCancellationRequested)
{
await _bus.Publish<IOrder>(new { Id = 2 },
stoppingToken);
await Task.Delay(3000, stoppingToken);
}
}
}
Consumer:
public class ConsumeNewOrder : IConsumer<IOrder>
{
public async Task Consume(ConsumeContext<IOrder> context)
{
// do stuff
}
}
Everything works locally in this project, but if I will split this code in 2 projects (copy IOrder and move consumer), it will not work, because consumer wont receive messages, but there will be new-order_skipped exchange and queue. The _skipped queue appears because consumer does not consume messages, but I don't know why. Please help