基于消息触发 WebJob 方法 属性

Triggering WebJob Method Based on Message Property

我有一个 Azure WebJobs 项目,它处理由网站操作触发的大量耗时任务。它工作正常。

但是从消息到方法调用的映射使用了魔法字符串:

public class SomeClass
{        
    public async Task ProcessMessage(
        [ QueueTrigger( "%" + nameof( ContainerQueueConstants.FilteredVoterFiles ) + "%" ) ] AgencyOutreachMessage
            msg,
        TextWriter azureLogWriter
    )
    {
        PhaseNames.SetNames( "Exporting Data", "Job Completed" );

        await ExecuteFromMessage( msg, azureLogWriter, Launch );
    }
}

public class ContainerQueueConstants
{
    public const string ImportFile = "import-file";
    public const string VoterTraits = "voter-traits";
    public const string Voter = "voter";
    public const string FilteredVoterFiles = "filtered-voter-files";
}

我想避免使用硬编码字符串作为队列名称。理想情况下,我希望能够根据消息中包含的 属性 的值将消息路由到特定方法。

但我不确定这是否可行,至少在 WebJobs SDK 的 1.1.x 版本中是这样。

建议或建议表示赞赏。

我建议使用 N 个 CloudQueue 实例来监控 N 个不同的存储队列。由于您是在 WebJob 中执行此操作,因此您可能会将其作为一个连续的 Web 作业来执行,并且必须自己为每个队列执行轮询。您还必须负责删除成功处理的消息。

QueueTriggerAttribute built-in 支持死信。如果您不使用 QueueTriggerAttribute,我不相信会有自动死信支持。