我正在嘗試使用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}");
});
});
});