我正在使用MassTransit和RabbitMQ创建一个简单的发布者/订阅服务器。发布服务器有以下代码来初始化总线:
/** create the bus */
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
{
h.Username("guest");
h.Password("guest");
});
})
目前,我正在使用框架,并好奇如何使用MassTransit作为总线实现。
我目前面临的问题是,如何在MassTransit端正确注册使用者,以便将消息(命令和事件)路由到像这样的处理程序
public class InventoryCommandHandlers : ICommandHandler<CreateInventoryItem>
{
public void Handle(CreateInventoryItem message)
{
// do some job...
}
}
public class InventoryListVi
我试图使用带有间隔设置的UseRetry,使用MassTransit和Azure作为传输。消费者代码:
public async Task Consume(ConsumeContext<ISimpleRequest> context)
{
_log.InfoFormat("Strated working on {0}", context.Message.CustomerId);
throw new InvalidOperationException("some error");
}
我使用RabbitMQ而不使用Masstransit,每秒发送10,000条消息,并在100秒钟内发送100万条消息。
但是在我的机器中,在使用RabbitMQ时,性能非常低。
当发布/使用消息时,硬盘非常活跃(使用率为99%),而此进程的CPU活动几乎为0%。
当使用此代码运行发布服务器/订阅服务器控制台应用程序时:
var bus = ServiceBusFactory.New(x =>
{
x.UseRabbitMq();
x.ReceiveFrom("rabbitmq://localhost/Example_Hello");
});
var mes