我有一个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";
}
我想摆脱使用硬编码字符串的队列名称。理想情况下,我希望能够根据消息中包含的属性值将消息路由到特定方法。
但我不确定这是否可能,至少在1.1.x版本的WebJobs SDK中是不可能的。
赞赏的建议或意见。
答案 0 :(得分:2)
我建议使用N个CloudQueue实例来监控N个不同的存储队列。由于您在WebJob中执行此操作,因此您可能会将其作为连续的webjob执行此操作,并且必须自己执行每个队列的轮询。您还必须负责删除成功处理的邮件。
QueueTriggerAttribute内置了对deadlettering的支持。如果您不使用QueueTriggerAttribute,我不相信有自动死钱支持。