我有一个天蓝色的网页MyTestWebJob
内部Function.cs
public static void ProcessQueueMessage([QueueTrigger("Testqueue")] string message, TextWriter log)
{
log.WriteLine(message);
}我想多次执行ProcessQueueMessage,因为我想让我的应用程序成为多个租户,所以当tenantId中有消息时,它就会执行它。
基本上,我怎样才能使用天蓝色的网络工作实现多租户?
有人能给我提示或者客户触发代码吗?
发布于 2015-10-20 18:19:19
如果您想对每个租户的处理并行化,有许多技术。
类似于@viperguynaz提供的代码,但只是将为每个租户处理的逻辑放在自己的线程中。要做到这一点,有很多不同的技术。这样做的缺点是,因为每个线程都将执行异步,您将失去web作业仪表板的一些细节。
对于每个租户都需要执行一次的谓词,您可以创建一个作业,其任务是接受单个队列项,并将其作为每个租户的新队列项。您将有一个web作业负责在所有租户之间爆炸操作,然后另一个web作业负责处理每个租户的操作。这种方法的好处是它非常干净(拆分租户操作的逻辑与正在执行的实际逻辑是分开的),并且可以同步执行处理,从而允许web作业仪表板按预期工作。这种方法的一个缺点是,在启动“爆炸”任务时会有一些延迟,但这应该不会有太大影响,对吧?毕竟,这是一个背景过程,对吗?:)
默认情况下,web作业从队列中提取一批16项以并行运行。你可以调整那些设置。下面是一个URL,以了解更多有关该问题的详细信息:
发布于 2015-10-20 16:45:47
听起来更像是希望在每次消息排队时为每个租户执行ProcessQueueMessage中的代码:
public static void ProcessQueueMessage([QueueTrigger("Testqueue")] string message, TextWriter log)
{
foreach (var id in tenantIds)
{
log.WriteLine(message);
}
}https://stackoverflow.com/questions/33241663
复制相似问题