我使用masstransit 4.0.30319,使用rabbitmq 3.7.3,我无法进行二级重试。
以下代码是一个简单的程序,用于说明我正在做的事情。
据我从masstransit的文档中可以看出,我认为这应该有效(控制台输出应该是一个新的"收到:嗨"每10秒)。但我只得到一行输出。
我尝试过ScheduleSend(),SchedulePublish()和Redeliver()。都具有相同的结果。
我对masstransit很新,所以我希望我在某个地方犯了一些简单的错误......
using System;
using System.Threading.Tasks;
using MassTransit;
namespace TestMassTransit2
{
public class YourMessage { public string Text { get; set; } }
public class YourMessageConsumer : IConsumer<YourMessage>
{
public async Task Consume(ConsumeContext<YourMessage> context)
{
await Console.Out.WriteLineAsync($"Received: {context.Message.Text}");
//await context.ScheduleSend(TimeSpan.FromSeconds(10), context.Message);
//await context.SchedulePublish(TimeSpan.FromSeconds(10), context.Message);
await context.Redeliver(TimeSpan.FromSeconds(10));
//await Console.Out.WriteLineAsync($"retry count: {context.GetRetryAttempt()}");
}
}
public class Program
{
public static void Main()
{
var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
var host = sbc.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
sbc.UseMessageScheduler(new Uri("rabbitmq://localhost/quartz"));
sbc.ReceiveEndpoint(host, "test_queue", ep =>
{
ep.Consumer<YourMessageConsumer>();
});
});
bus.Start();
bus.Publish(new YourMessage { Text = "Hi" });
Console.WriteLine("Press any key to exit");
Console.ReadKey();
bus.Stop();
}
}
}