我有一个azure webjob MyTestWebJob
在Function.cs
public static void ProcessQueueMessage([QueueTrigger("Testqueue")] string message, TextWriter log)
{
log.WriteLine(message);
}
我想多次执行ProcessQueueMessage
,因为我想让我的应用程序成为多租户,所以当tenantId
有消息时,它会执行它{/ 1}。
基本上我如何使用azure webjob实现多租户?
任何人都可以给我提示或客户触发代码吗?
答案 0 :(得分:4)
在每次邮件排队时,您更希望为每个租户执行ProcessQueueMessage
中的代码:
public static void ProcessQueueMessage([QueueTrigger("Testqueue")] string message, TextWriter log)
{
foreach (var id in tenantIds)
{
log.WriteLine(message);
}
}
答案 1 :(得分:2)
如果要并行化每个租户的处理,有许多技术。
与@viperguynaz提供的代码类似,但只是将每个租户处理的逻辑放入其自己的线程中。有很多不同的技术可以做到这一点。这样做的缺点是因为每个线程都将执行异步,您将丢失Web作业仪表板的一些细节。
对于需要为每个租户执行一次的动词,您可以创建一个作业,其作业是获取单个队列项并将其作为每个租户的新队列项进行爆炸。您将有一个Web作业负责在所有租户中展开操作,然后是另一个处理每个租户的操作的Web作业。这种方法的好处在于它的超级清洁(用于拆分租户操作的逻辑与正在执行的实际逻辑是分开的),并且可以同步执行处理,从而允许Web作业仪表板按预期工作。这种方法的一个缺点是你会在开始爆炸的过程中获得一点延迟。任务,但这不是太重要了吗?毕竟,它的背景过程反正对吗? :)
默认情况下,Web作业从队列中提取一批16个项目以并行运行它们。您可以调整这些设置。以下是有关详细信息的URL: