基于消息触发 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,我不相信会有自动死信支持。
我有一个 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,我不相信会有自动死信支持。