我正在尝试使用MassTransit和Azure Service Bus创建一个应用程序,请参阅这篇文章http://docs.masstransit-project.com/en/latest/advanced/turnout.html。如何使用MassTransit从道岔队列中检索消息?
在Azure Service Bus中启动应用程序后,创建了两个队列(其中一个队列已过期)。而且在我执行订阅者之后被创建的投票队列和消息被从main移动到这个队列。如果用户工作,我可以检索邮件。如果我停止用户(杀死进程或关机)消息仍在轮流队列中。下次我执行订阅者时,它会创建新的投票队列,并且不会检索已处理但未完成的邮件。那么,我怎么能不失去信息呢?另外我如何设置在一个节点中处理的消息的最大数量限制?
_busControl = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
{
var host = cfg.Host("********", h =>
{
//h.OperationTimeout = TimeSpan.FromMinutes(1);
});
cfg.MaxConcurrentCalls = 1;
cfg.UseServiceBusMessageScheduler();
cfg.TurnoutEndpoint<ISimpleRequest>(host, "test_longruning",
e =>
{
e.SuperviseInterval = TimeSpan.FromSeconds(30);
e.PartitionCount = 1;
e.SetJobFactory(async context =>
{
Console.WriteLine($"{DateTime.Now} Start Message: {context.Command.CustomerId}");
await Task.Delay(TimeSpan.FromMinutes(7), context.CancellationToken);
Console.WriteLine($"{DateTime.Now} End Message: {context.Command.CustomerId}");
});
});
});