создана очередь ошибок, игнорирующая errorQueueAddress с Rebus - PullRequest
0 голосов
/ 30 мая 2019

Создается очередь «ошибки», даже если указана пользовательская очередь под названием «яд», как показано ниже.

Ведение журнала ниже:

[INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Тема # 1): Инициализация транспорта Zure Service Bus с очередью «subscriber1» [INF] Rebus.Threading.TaskParallelLibrary.TplAsyncTask (Тема № 1): Запуск по йодной задаче «CleanupTrackedErrors» с интервалом 00:00:10 [INF] Rebus.Bus.RebusBus (Тема № 1): установка количества рабочих на 5 [DBG] Rebus.Bus.RebusBus (Тема # 1): Добавление работника «Ребус 1, работник 1» [DBG] Rebus.Bus.RebusBus (Тема # 1): Добавление работника "Ребус 1, работник 2" [DBG] Rebus.Bus.RebusBus (Тема # 1): Добавление работника «Ребус 1, работник 3» [DBG] Rebus.Bus.RebusBus (Тема # 1): Добавление работника "Ребус 1, работник 4" [DBG] Rebus.Workers.ThreadPoolBased.ThreadPoolWorker (Rebus 1 рабочий 2): Запуск работающего (на основе пула потоков) «Rebus 1 работник 2» [DBG] Rebus.Workers.ThreadPoolBased.ThreadPoolWorker (Rebus 1 рабочий 1): Стартовый (на основе пула потоков) работник "Ребус 1 работник 1" [DBG] Rebus.Workers.ThreadPoolBased.ThreadPoolWorker (Rebus 1 рабочий 3): Стартовый (на основе пула потоков) работник "Ребус 1 работник 3" [DBG] Rebus.Bus.RebusBus (Тема # 1): Добавление работника "Rebus 1 работник 5" [DBG] Rebus.Workers.ThreadPoolBased.ThreadPoolWorker (Rebus 1 рабочий 4): Начинающий (на основе пула потоков) работник "Ребус 1 работник 4" [INF] Rebus.Bus.RebusBus (Thread # 1): шина "Rebus 1" запущена [DBG] Rebus.Workers.ThreadPoolBased.ThreadPoolWorker (Rebus 1 рабочий 5): Начинающий (на основе пула потоков) работник "Ребус 1 работник 5" [INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Тема # 1): Инициализация транспорта службы шины Azure с очередью «яд» [INF] Rebus.Threading.TaskParallelLibrary.TplAsyncTask (Thread # 1): запуск периодическое задание «CleanupTrackedErrors» с интервалом 00:00:10 [INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Тема № 5): Создание Очередь ASB "ошибка" [INF] Rebus.Bus.RebusBus (Thread # 1): номер настройки работников до 1 [DBG] Rebus.Bus.RebusBus (Тема # 1): Добавление работника «Rebus 2 рабочий 1» [INF] Rebus.Bus.RebusBus (Тема № 1): Автобус «Rebus 2» запустил [DBG] Rebus.Workers.ThreadPoolBased.ThreadPoolWorker (Rebus 2 работник 1): стартовый (основанный на пуле потоков) работник "Ребус 2 работник 1" Абонент 1 Нажмите ENTER, чтобы выйти

Подписчик ниже:

class Subscriber1
    {
        static void Main()
        {

            var activator = new BuiltinHandlerActivator();

            activator.Register(() => new Handler());

            Configure.With(activator)
                .Logging(l => l.ColoredConsole(minLevel: LogLevel.Debug))
                 .Transport(t => t.UseAzureServiceBus(Consts.ServiceBusConnectionString, Consts.Subscriber1))                
                .Options(o =>
                {                     
                        o.SimpleRetryStrategy(maxDeliveryAttempts: 2,
                        errorQueueAddress: "poison");

                    o.Register<ITopicNameConvention>(c => new SimpleTopicNameConvention());

                        o.Decorate<IErrorHandler>(c => new MyErrorHandler(c.Get<IErrorHandler>()));

                        o.SetNumberOfWorkers(5);
                    o.SetMaxParallelism(10);

                        o.SetBackoffTimes(
                        TimeSpan.FromMilliseconds(100),
                        TimeSpan.FromMilliseconds(200),
                        TimeSpan.FromSeconds(1));

                    }).Start();

           //if block 2 is commented, the issue doesn't happen
          //block 2 start
            var activator2 = new BuiltinHandlerActivator();

            Configure.With(activator2)
                .Transport(t => t.UseAzureServiceBus(Consts.ServiceBusConnectionString, "poison"))
                .Routing(r =>
                {
                    r.AddTransportMessageForwarder(async transportMessage =>
                    {
                        var sourceQueue =
                            transportMessage.Headers.TryGetValue(Headers.SourceQueue, out var result)
                                ? result
                                : throw new ArgumentException($"Could not find '{Headers.SourceQueue}' header");

                        return ForwardAction.ForwardTo(sourceQueue);
                    });
                })
                .Start();
             //block 2 end
            activator.Bus.Subscribe<string>().Wait();


            Console.WriteLine("This is Subscriber 1");
            Console.WriteLine("Press ENTER to quit");
            Console.ReadLine();
            Console.WriteLine("Quitting...");

            activator.Dispose();
            activator2.Dispose();

        }
    }

Если блок 2 выше отключен, проблема не возникает.

Есть идеи?

...