gpt4 book ai didi

azure - 使用 Azure 队列存储为每个队列配置 QueueTrigger

转载 作者:行者123 更新时间:2023-12-04 21:40:02 26 4
gpt4 key购买 nike

我有两种不同的方案来使用 Azure 队列存储处理 2 种不同类型的队列。

我想设置一个队列依次运行,另一个同时运行。

我一直在查看文档,我可以将配置应用到影响整个队列范围的主机。

static void Main(string[] args)
{
JobHostConfiguration config = new JobHostConfiguration();
config.Queues.BatchSize = 8;
config.Queues.MaxDequeueCount = 4;
config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(15);
JobHost host = new JobHost(config);
host.RunAndBlock();
}

我可以使用单个 Azure 存储帐户来配置这些场景吗?

最佳答案

根据您的问题,我了解到您有 2 个队列,每个队列需要用于处理不同的任务/作业。

您可以遵循这些方法

1) 部署2个Web作业,每个作业在不同的队列上等待,并在各自的队列上出现消息时触发相应的作业。您上面提到的配置代码为一项作业设置了基础。 AFAIK,一项工作可以在一个队列上等待。您可以在 Main() 方法

旁边使用这样的方法
public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage)
{
//do something
}

2) 如果您想根据一个队列中的消息触发多个场景,您可以在 ProcessQueueMessage 方法上使用 if else block ,或者如果您想让它更易于管理,请使用策略模式从 ProcessQueueMessage

执行正确的方法

如果您遵循上面的#1,您将为每个任务/作业/场景部署不同的 Web 作业。如果您遵循上面的#2,您将部署一个 Web 作业,并且每条消息的作用是在处理消息时决定的。

与等待队列相关的文档 here .

[更新]

正如我们所知,一个 Web 作业只能等待一个队列,在这种情况下,等待队列并不是正确的方法。最好定期触发网络作业(比如每 5 分钟触发一次)。从多个队列中取出消息并对其进行处理的逻辑将成为一项 Web 作业的一部分。处理每个队列可以是由 Web 相同作业调用的方法(依次调用或同时使用 Task)。您可以在 CloudQueue.GetMessages 上为每个队列传递消息计数。它与 Windows 服务的作用非常相似。只是触发部分由 Web 作业负责,并且它作为 Web 作业而不是 Windows 服务运行。这是一个粗略的伪代码:

main()
{
// initialize webjob
}
public static MyWebJobMethod(...)
{
Task a = () => {//process queue 1};
Task b = () => {//process queue 2}
Task.WaitAll(a,b);
}

关于azure - 使用 Azure 队列存储为每个队列配置 QueueTrigger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28910895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com