无法进行二级重试

时间:2018-02-05 22:52:10

标签: masstransit

我使用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();
        }
    }
}

0 个答案:

没有答案