代码之家  ›  专栏  ›  技术社区  ›  Kyle J V

在QueueTrigger中看到错误-Azure WebJobs SDK 3.0

  •  0
  • Kyle J V  · 技术社区  · 6 年前

    它可以从队列中拉出,但我无法在队列触发器函数中看到任何错误,也无法在本地命中任何断点。我知道消息是被提取的,因为它是唯一指向我的本地存储模拟器的应用程序(具有唯一的队列名称),并且所有消息在添加几秒钟后直接进入中毒队列。不过,我从未在控制台中看到错误。

    这是我的主要工作程序.cs-断点在这里可以很好地命中,但在QueueProcessor中不能:

    static void Main()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("Initializing DI container...");
    
            var containerBuilder = new ContainerBuilder();
            RegisterTypes(containerBuilder);
            containerBuilder.RegisterType<BulkUpdateRequestProcessor>();
            containerBuilder.Build();
    
            Console.Write("done.");
            Console.WriteLine();
            Console.Write("Initializing host configuration...");
            var hostBuilder = new HostBuilder();
            hostBuilder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices()
                .AddAzureStorage(options =>
                 {
                     options.BatchSize = 1;
                     options.MaxDequeueCount = 1;
                     options.MaxPollingInterval = TimeSpan.FromSeconds(5f);
                 });
    
                b.AddTimers();
    
                b.AddExecutionContextBinding();
                b.AddDashboardLogging();
    
    
            })
            .ConfigureServices((x) => x.AddAutofac())
            .UseConsoleLifetime();
    
            Console.Write("done.");
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Green;
    
            var host = hostBuilder.Build();
            using (host)
            {
                host.Run();
            }
    
        }
    

    队列处理器:

    public class BulkUpdateRequestProcessor
    {
        private readonly IRevisionService _revisionService;
    
        private readonly ILogger _logger;
        private readonly IClock _clock;
    
        public BulkUpdateRequestProcessor(IRevisionService revisionService, ILogger logger, IClock clock)
        {
            _revisionService = revisionService;
            _logger = logger;
            _clock = clock ?? throw new ArgumentNullException(nameof(clock));
        }
    
        public async Task ProcessNewJobRequest([QueueTrigger(BulkUpdateConstant.BULK_UPDATE_JOB_QUEUE)] Guid jobId, TextWriter log)
        {
            _logger.Info(string.Format("New item appeared in a queue: '{0}'", jobId));
    
            try
            {
                await ProcessJobRequest(jobId);
            }
            catch (Exception ex)
            {
                _logger.Log(NLog.LogLevel.Error, ex);
                await TryNotifyJobFailed(jobId, ex.Message);
                throw;
            }
    
            _logger.Info(string.Format("Request '{0}' processed", jobId));
        }
    }
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Kyle J V    6 年前

    原来,包含Web作业绑定的类需要一个零参数构造函数。不过我是偶然发现的。如果发生了构建错误就好了。-1微软

    推荐文章